在 JAVA 中加密的 AES 密钥在 swift 中解密
AES secret key encrypted in JAVA decrypt in swift
我想解密从 java 获得的加密“密钥”,服务器端检查 iOS 和 server.I 之间的安全通信也有加密文本和私人从私钥解密密钥然后从秘密 key.I 解密文本的密钥现在停留在解密秘密
从 JAVA 收到的加密密钥:“bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
func aesOperation(_ operation: CCOperation, on data: Data?, key: String?) -> Data? {
var keyPtr = [Int8](repeating: 0, count: kCCKeySizeAES128)
bzero(&keyPtr, MemoryLayout.size(ofValue: keyPtr))
key?.getCString(&keyPtr, maxLength: MemoryLayout.size(ofValue: keyPtr), encoding: .utf8)
let dataLength = data?.count ?? 0
let bufferSize = dataLength + kCCBlockSizeAES128
var buffer = malloc(bufferSize)
var numBytesEncrypted: size_t = 0
let cryptStatus = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128), CCOptions(kCCOptionPKCS7Padding), keyPtr, kCCBlockSizeAES128, keyPtr, data?.bytes, dataLength, buffer, bufferSize, &numBytesEncrypted)
if cryptStatus == kCCSuccess {
print("Success")
return Data(bytes: &buffer, count: numBytesEncrypted)
}
free(buffer)
return nil}
func decrypt(_ data: Data?, withKey key: String?) -> String?
{
return String(data: aesOperation(CCOperation(kCCDecrypt), on: data, key: key)!, encoding: .utf8)
}
let base64Encoded = "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
let decodedData = Data(base64Encoded: base64Encoded)!
**getting crashed in this line **
let decodedString = String(data: decodedData, encoding: .utf8)!
let mySecretKeyDecrypt = decrypt(decodedData, withKey: b64Key)
b64Key是我的私钥
我正在尝试用私钥解密我的私钥。
自 2 天以来尝试了几种方法.. 任何帮助将不胜感激
您描述的崩溃是因为您的密钥不是 base64 字符串。因为它在 E
和 a
之间包含 space
zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8=
.
我想解密从 java 获得的加密“密钥”,服务器端检查 iOS 和 server.I 之间的安全通信也有加密文本和私人从私钥解密密钥然后从秘密 key.I 解密文本的密钥现在停留在解密秘密 从 JAVA 收到的加密密钥:“bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
func aesOperation(_ operation: CCOperation, on data: Data?, key: String?) -> Data? {
var keyPtr = [Int8](repeating: 0, count: kCCKeySizeAES128)
bzero(&keyPtr, MemoryLayout.size(ofValue: keyPtr))
key?.getCString(&keyPtr, maxLength: MemoryLayout.size(ofValue: keyPtr), encoding: .utf8)
let dataLength = data?.count ?? 0
let bufferSize = dataLength + kCCBlockSizeAES128
var buffer = malloc(bufferSize)
var numBytesEncrypted: size_t = 0
let cryptStatus = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128), CCOptions(kCCOptionPKCS7Padding), keyPtr, kCCBlockSizeAES128, keyPtr, data?.bytes, dataLength, buffer, bufferSize, &numBytesEncrypted)
if cryptStatus == kCCSuccess {
print("Success")
return Data(bytes: &buffer, count: numBytesEncrypted)
}
free(buffer)
return nil}
func decrypt(_ data: Data?, withKey key: String?) -> String?
{
return String(data: aesOperation(CCOperation(kCCDecrypt), on: data, key: key)!, encoding: .utf8)
}
let base64Encoded = "bjgZTpZD7DvrjTRXJ6LCA9GpkDnLJLgIVAmFWFXNUVqVWdjXOiOGeRHJx8owW6Pp/a5ECe8CljlwZIAFhRUEPfTks22yntUOhrCUbDzzqYOMiQYfEV/h7/zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8="
let decodedData = Data(base64Encoded: base64Encoded)!
**getting crashed in this line **
let decodedString = String(data: decodedData, encoding: .utf8)!
let mySecretKeyDecrypt = decrypt(decodedData, withKey: b64Key)
b64Key是我的私钥
我正在尝试用私钥解密我的私钥。 自 2 天以来尝试了几种方法.. 任何帮助将不胜感激
您描述的崩溃是因为您的密钥不是 base64 字符串。因为它在 E
和 a
zahl4PV1t4rHXDsQPaf7Rrl8k5jKj0Cf7E aKA4U/pyAjZlvVhMjH8=
.