在 php 中,您可以使用crypt函数并给它一个以“$2a$”开头的盐,以使用 CRYPT_BLOWFISH 对字符串进行加密。
例如。
echo crypt("test", "$2a$13$1mFan0ihXzWfxATGXSKRqe");
//output: $2a$13$1mFan0ihXzWfxATGXSKRqedMoYWoXpPizu4Q274LnpVVJ7gyza3Lq
我尝试使用as3crypto库在 as3 中生成输出。我试过的代码片段。
var key:ByteArray = Hex.toArray("$2a$13$1mFan0ihXzWfxATGXSKRqe");
var blowfish:BlowFishKey = new BlowFishKey(key);
var dataBytes:ByteArray = new ByteArray();
dataBytes.writeUTFBytes("test");
blowfish.encrypt(dataBytes);
var encrypted:String = Hex.fromArray(dataBytes).toUpperCase();
trace(encrypted);
//output: 986C8D386BEAD6AE
我不认为那些河豚密码是一样的。根据 php.net 上的文档,基于 bcrypt 的 php 河豚是一种方法。在 as3 中,我还可以解密加密的消息。
我搜索了在 as3 中提供与 php 中相同的输出但没有成功的河豚库。任何人都知道如何在 actionscript 3.0 中生成与 php 相同的输出?
更新
我正在使用 adobe air。所以原生解决方案也是可以接受的。我可以创建一个本机扩展或使用 NativeProcess 来访问它来进行加密而不是 as3。