如何解决适用于AES密钥的飞镖正确填充
我正在用dart构建一个简单的加密工具。
我需要使用密码对rsa私钥进行加密。
我正在使用AES进行加密。
AES要求密钥为特定编号。位。
在我的情况下为256位。
我要求用户输入至少16个字符(128位)的密码。
因此,我需要将密码短语扩展到完整的256位。
目前,我只是将密码短语加倍,然后将结果裁剪为256位。
这是正确的做法还是更安全的填充密钥的方法?
我正在使用基于java bouncycastle库的dart pointycastle库。
更新
这是我最近的尝试
class StrongKey extends Key {
StrongKey.fromPassPhrase(String passPhrase) : super.fromUtf8(passPhrase);
Key secureStretch(Uint8List salt) {
return stretch(256,iterationCount: 100000,salt: salt);
}
@override
Key stretch(int desiredKeyLength,{int iterationCount = 100,Uint8List salt}) {
final params = Pbkdf2Parameters(salt,iterationCount,desiredKeyLength);
final pbkdf2 = PBKDF2KeyDerivator(Mac('SHA-512/HMAC'))..init(params);
return Key(pbkdf2.process(bytes));
}
static Uint8List get generateSalt => SecureRandom(256).bytes;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。