为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕码人2483693 2022-06-12 16:23:40
旧版应用程序 (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 )
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我想到了。如果有人感兴趣:


        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 );


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 321 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号