【问题标题】:How to get compatible encryption version in flutter as in iOS如何像在 iOS 中一样在 Flutter 中获得兼容的加密版本
【发布时间】:2021-10-11 05:15:33
【问题描述】:

我正在一起开发 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

这里的问题是我在颤动中得到的加密字符串必须与 iOS 相同,但事实并非如此。有人可以帮助我在颤振中获得兼容的加密版本吗?请帮忙...

【问题讨论】:

  • 看看我的回答:stackoverflow.com/questions/61332076/… 它可能有助于解决您的问题。
  • 在 Kotlin 中,如何将数据编码为字符串?或者换句话说,您如何准确地表示您的 PKCS7?

标签: ios swift flutter encryption aes


【解决方案1】:

我终于自己解决了。在这里发布答案,希望对某人有所帮助。

我不得不更改以下行,

来自

final key = Key.fromBase64("Some_Key");

final key = Key.fromUtf8("Some_Key");

不是这样的。有效!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多