Swift 代码 - AES ECB PKCS5Padding 算法

问题描述

我使用 EasyCrypt 库来获取加密密钥:

let crypto = EasyCrypt(secret: "MySecretKey",algorithm: .sha1)
let result = crypto.hash("20201228165764")
let resultPasscode = crypto.hash("769762")
Output : 
result:  "9ZZeB5Kduxx6gYnmTyjoqpz1YC0="
resultPasscode:  "37HLrDaNoskp8NR85JaVG0aufDU="

RNEncryptor : HMAC algorithm
let data: Data = Data("20201228165764".utf8)
let password = "MySecretKey"
let ciphertext = RNCryptor.encrypt(data: data,withPassword: password)

下面是AES加密代码

func AESEncryption(key: String) -> String? {
                
                let keyData: NSData! = (key as Nsstring).data(using: String.Encoding.utf8.rawValue) as NSData!
                
                let data: NSData! = (self as Nsstring).data(using: String.Encoding.utf8.rawValue) as NSData!
                
                let cryptData    = NSMutableData(length: Int(data.length) + kCCBlockSizeAES128)!
                let keyLength              = size_t(kCCKeySizeAES128)
                let operation: Ccoperation = UInt32(kCCEncrypt)
                let algoritm:  CCAlgorithm = UInt32(kCCAlgorithmAES128)
                let options:   Ccoptions   = UInt32(kCcoptionECBMode + kCcoptionPKCS7Padding)
                var numBytesEncrypted :size_t = 0
                let cryptStatus = CCCrypt(operation,algoritm,options,keyData.bytes,keyLength,nil,data.bytes,data.length,cryptData.mutableBytes,cryptData.length,&numBytesEncrypted)

                
                if UInt32(cryptStatus) == UInt32(kCCSuccess) {
                    cryptData.length = Int(numBytesEncrypted)
                    
                    var bytes = [UInt8](repeating: 0,count: cryptData.length)
                    cryptData.getBytes(&bytes,length: cryptData.length)
                    
                    var hexString = ""
    
                    for byte in bytes {
                        hexString += String(format:"%02x",UInt8(byte))
                    }
                    
                    return hexString
                }
                
                return nil
            }       

输出是十六进制字符串:

b9477a54ac7316a29a2fd602f1892e00

AES/ECB/PKCS5Padding 中的预期输出

Meeting ID : 20201228165764
Passcode: 769762
 

加密值:

 meetingid:   "LfD3obeP45AAGXYxPiByvQ=="
 passcode:    "fcJSdMArO3vUOL/WxwzRfw=="

如何使用 AES/ECB/PKCS5Padding 快速添加 SHA-1 密钥?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)