В php вы можете использовать функцию crypt и дать ей соль, начинающуюся с "$2a $", чтобы зашифровать строку с помощью CRYPT_BLOWFISH.
Например.
echo crypt("test", "$2a$13$1mFan0ihXzWfxATGXSKRqe");
//output: $2a$13$1mFan0ihXzWfxATGXSKRqedMoYWoXpPizu4Q274LnpVVJ7gyza3Lq
Я попытался сгенерировать вывод в формате as3, используя библиотеку as3crypto. Фрагмент кода, который я пробовал.
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, php blowfish, основанный на bcrypt, является одним из способов. В as3 я также могу расшифровать зашифрованное сообщение.
Я искал библиотеку blowfish, которая в as3 дает тот же результат, что и в php, без успеха. Кто-нибудь знает, как сгенерировать тот же вывод в actionscript 3.0, что и в php?
ОБНОВЛЕНИЕ
Я использую адоб эйр. Так что нативное решение тоже приемлемо. Я мог бы создать собственное расширение или использовать NativeProcess для доступа к нему для шифрования вместо as3.
ОБНОВЛЕНИЕ 2 На данный момент я использую программу командной строки, созданную с помощью С# с использованием класса bcrypt, найденного на http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet.-сильный-хеш-пароль-для-dotnet-and-mono.ashx