iOS 如何在 flutter 中获取兼容的加密版本
How to get compatible encryption version in flutter as in iOS
我正在 iOS 和 flutter 应用程序一起工作。双方都对数据进行加密。下面是已经生效的iOS加密代码,
func encryption(encryptionKey: String) -> String{
if(self.isEmpty){
return ""
}else{
let key = encryptionKey
let dataBytes : [UInt8] = Array(self.utf8)
let keyBytes : [UInt8] = Array(key.utf8)
do {
let encryptedData = try AES(key: keyBytes, blockMode: ECB(), padding: .pkcs7).encrypt(dataBytes)
let encodedString = Data(encryptedData).base64EncodedString()
return encodedString
} catch let error {
print(error)
return ""
}
}
下面是我现在正在做的flutter加密代码(使用encrypt.dart包),
final key = Key.fromBase64("Some_Key");
final iv = IV.fromLength(16));
final encrypter = Encrypter(AES(key, mode: AESMode.ecb, padding: 'PKCS7'));
final encrypted = encrypter.encrypt(someString, iv: iv); //IV is ignored in ECB mode
这里的问题是我在 flutter 中得到的加密字符串必须与 iOS 相同,但事实并非如此。有人可以帮我在 flutter 中获得兼容的加密版本吗?请帮忙...
终于自己解决了。在这里发布答案希望它能帮助某人。
我不得不更改下面的行,
来自
final key = Key.fromBase64("Some_Key");
至
final key = Key.fromUtf8("Some_Key");
就是这样。有效!!
我正在 iOS 和 flutter 应用程序一起工作。双方都对数据进行加密。下面是已经生效的iOS加密代码,
func encryption(encryptionKey: String) -> String{
if(self.isEmpty){
return ""
}else{
let key = encryptionKey
let dataBytes : [UInt8] = Array(self.utf8)
let keyBytes : [UInt8] = Array(key.utf8)
do {
let encryptedData = try AES(key: keyBytes, blockMode: ECB(), padding: .pkcs7).encrypt(dataBytes)
let encodedString = Data(encryptedData).base64EncodedString()
return encodedString
} catch let error {
print(error)
return ""
}
}
下面是我现在正在做的flutter加密代码(使用encrypt.dart包),
final key = Key.fromBase64("Some_Key");
final iv = IV.fromLength(16));
final encrypter = Encrypter(AES(key, mode: AESMode.ecb, padding: 'PKCS7'));
final encrypted = encrypter.encrypt(someString, iv: iv); //IV is ignored in ECB mode
这里的问题是我在 flutter 中得到的加密字符串必须与 iOS 相同,但事实并非如此。有人可以帮我在 flutter 中获得兼容的加密版本吗?请帮忙...
终于自己解决了。在这里发布答案希望它能帮助某人。
我不得不更改下面的行,
来自
final key = Key.fromBase64("Some_Key");
至
final key = Key.fromUtf8("Some_Key");
就是这样。有效!!