当前位置: 首页 > 知识库问答 >
问题:

如何使swift不返回加密的密码文本,而是返回加密文本的未加密版本?

施越彬
2023-03-14
override func viewDidLoad() {
    ....
    do{
        let data = "\(message!)".data(using: String.Encoding.utf8)!
        // tag name to access the stored public key in keychain
        let TAG_PUBLIC_KEY = "com.example.keyPublic"
        let encryptStr = "encrypted_message="
        let encryptStrData = encryptStr.data(using: String.Encoding.utf8)!
        let keyString = getKeyStringFromPEMString(PEMString: """
-----BEGIN PUBLIC KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END PUBLIC KEY-----
""")
        let encryptedData = try RSAUtils.encryptWithRSAPublicKey(data: data, pubkeyBase64: keyString, tagName: TAG_PUBLIC_KEY)!
        let length = encryptStrData.count + encryptedData.count
        var array = [UInt8](repeating:0, count:length)
        encryptStrData.copyBytes(to: &array, count: encryptStrData.count)
        encryptedData.copyBytes(to: &array+encryptStrData.count, count: encryptedData.count)
        var st=""
        for byte in encryptedData{
            st += String(format:"%02X", byte)
        }
        print("ENCRYPTED MESSAGE")
        print(st)
    }
    catch{
        print(error)
    }
    ...
    //Key function - remove header and footer
    func getKeyStringFromPEMString(PEMString: String) -> String {
        let keyArray = PEMString.split(separator: "\n") //Remove new line characters
        var keyOutput : String = ""
        for item in keyArray {
            if !item.contains("-----") { //Example: -----BEGIN PUBLIC KEY-----
                keyOutput += item //Join the text together as a single string
            }
        }
        return keyOutput
    }
    ....
}
from Crypto.PublicKey import RSA
from Crypto import Random
from base64 import b64decode
def decText(encTest):
    random_generator = Random.new().read
    key = RSA.generate(2048, random_generator)
    with open('private.pem','r') as f:
        key=RSA.importKey(f.read())
    rawCipherData = b64decode(encTest)
    decrypted = key.decrypt(encTest)
    print(decrypted)
    return decrypted

这里是密文
0C344863CBC6A4D9153C275DE2074C097A153BFBFD2A34F5312FED4BB075FF28DC3CC584A31CBBD1DCCBBFC18417C1B624B9312F67703817B478DBD07A59CD59E62831A833F5ECA07A94C7E55DB59C4F204FA92DEA4C79106FFA66427B8D49ECAC0E962F8466A7BD525624339DC96AB

下面是python用密码文本输出的十六进制:<代码>A8 AB FA EF FE 71 7E 3E 19 C0 02 AC 08 7E 0C 0C 01 50 A6 34 85 E2 F1 6D 36 DD 30 B2 FA BC A0 64 B8 C2 A0 3E 40 A7 9A A3 C7 05 E1 55 AD CE 61 64 33 0A 89 30 A4 86 55 74 43 F3 3F 37 45 B6 AC 81 27 26 41 B1 69 A3 0A FC 30 38 5A 03 7D 86 45 55 9F 5C 6A 12 E7 0C 8D 06 0E 84 48 1F 25 F6 0E CD 22 3A E2 DCAE C6 0B 51 F1 C4 52 66 99 49 2F EC E4 48 A1 50 D9 FC 93 5B BC E1 D2 E4 5F CF 83 77 2E D5 87 67 08 3E 80 0B AF 9B 6E 30 37 50 61 0E 21 9E DB 6A A0 01 93 D4 C8 9D EF E9 27 BD BB 36 2F 07 FA 9C 5F D3 42 23 42 48 00 35 B0 11 24 DD 45 83 D1 C2 80 2D B1 B3 DF E7 9E D3 90 2F 60 C7 14 25 20 28 73 BC AB 6E75 15 27 22 C2 C9 B3 E0 46 1D C2 99 C5 85 E8 F5 D4 D2 A3 1E 5A 59 42 3B FC 2B 48 E4 49 0A 6C 1D D1 2F 27 D3 CF 75 63 41 C5 5A 26 BC 56 EB A3 28 59 A4 32 61 82 A4 2E 41

共有1个答案

长孙智刚
2023-03-14

我看到编码和解码的不同

在Swift加密代码中,加密似乎输出:

hex_encode( "encrypted_message=" + encrypt( data ) )

当巨蟒在做

base64_decode( ciphertext )
 类似资料:
  • 问题内容: 很难在Google上找到直接答案。 我想从诸如的用户那里收集一段文字和一条消息 。 然后,我希望能够以某种方式对消息进行加密/解密,以便可以将其保存在数据库中,而不必担心如果我的网站被黑客入侵,数据就会被泄露, 有没有一种简单的方法可以用python实现,请有人提供/指导我看一个例子。 也许是一个示例,该示例如何使用诸如之类的种子创建公钥/私钥对? 提前谢谢了 :) 编辑:为了清楚起见

  • 问题内容: 我正在使用JConsole访问我的应用程序MBean,并且使用了password.properties文件。但是根据Sun的规范,此文件仅包含明文格式的密码。 现在,我想对密码进行加密并将其用于JConsole的JMX用户身份验证(“远程”部分中的“用户名”和“密码”字段)。我可以使用任何预定义的加密逻辑或自己的加密算法。 是否有人知道将这种纯文本密码更改为加密密码,这样JMX Fra

  • 我试图通过演示应用程序在as3crypto中加密一个文本。 现在我正试图通过php解密加密的文本,但似乎文本没有正确解密。有人知道如何通过PHP正确解密吗?还是我做错了?请启发我... 这是一个场景: > 在http://crypto.hurlant.com/demo/: 初始化向量:留空 按加密。选择base64并复制密码文本。 制作一个包含以下代码的php脚本并运行它:

  • 问题内容: 来自github: 哈希密码: 要检查密码: 从上面看,比较中如何不包含盐值?我在这里想念什么? 问题答案: 盐合并到哈希中(以纯文本形式)。比较功能只是将盐从哈希表中提取出来,然后使用它来哈希密码并执行比较。

  • 我正在使用Spring Netflix创建一个服务器配置。我已经配置了pom.xml,并且添加了安全依赖项。此外,我还配置了application.yml和bootstrap.yml文件。当使用encrypt命令调用服务器返回加密的密钥时,服务器响应: 白标签错误页 此应用程序没有/error的显式映射,因此您将其视为一种后退。 2015年7月23日(Thu Jul 23)10:20:46(CES

  • 加密是使用Stanford Javascript加密库(SJCL)完成的。下面是一个完整的加密示例,分为两部分。第一个是关于PBKDF2的基于密码的密钥派生。在第二部分中,使用派生密钥和初始化向量(IV)进行实际加密。注意,salt和IV是硬编码的,以便更容易提供C#解密解决方案。 null 变量的值: SJCL位阵列: 十六进制编码: Base64编码: 变量的值: null AES/CCM解密