使用 Blowfish/CBC/PKCS5Padding 加密和解密数据

旧版应用程序 (ColdFusion) 正在使用Blowfish/CBC/PKCS5Padding加密。我们如何使用 BouncyCastle 库加密和解密这些数据?


对于其他字段,使用以下命令在 ColdFusion 中加密:


encrypt( data, key, 'BLOWFISH', 'HEX')

我们使用此代码


BlowfishEngine engine = new BlowfishEngine();

PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(engine);

cipher.Init(false, new KeyParameter(Convert.FromBase64String(keyString)));

byte[] out1 = Hex.Decode(name);

byte[] out2 = new byte[cipher.GetOutputSize(out1.Length)];

int len2 = cipher.ProcessBytes(out1, 0, out1.Length, out2, 0);

cipher.DoFinal(out2, len2);

return Encoding.UTF8.GetString(out2);

问题是如何解密一些东西,像这样在 ColdFusion 中加密:


encrypt( data, Key, "Blowfish/CBC/PKCS5Padding", "base64", IV )


慕码人2483693
浏览 323回答 1
1回答

胡说叔叔

我想到了。如果有人感兴趣:        BlowfishEngine engine = new BlowfishEngine();        var cipher = new PaddedBufferedBlockCipher( new CbcBlockCipher( engine ), new Pkcs7Padding() );        StringBuilder result = new StringBuilder();        cipher.Init( false, new ParametersWithIV( new KeyParameter( Convert.FromBase64String( keyString ) ), System.Text.Encoding.ASCII.GetBytes( IV ) ) );        byte[] out1 = Convert.FromBase64String( name );        byte[] out2 = new byte[ cipher.GetOutputSize( out1.Length ) ];        int len2 = cipher.ProcessBytes( out1, 0, out1.Length, out2, 0 );        cipher.DoFinal( out2, len2 );        return Encoding.UTF8.GetString( out2 );
打开App,查看更多内容
随时随地看视频慕课网APP