求c#班的3DES Base64()算法

qingYun1029 2014-01-17 10:07:15
网上搜 了一些,但还是错误的。。

现在实现接口,有java源码需要改成c#版本的,发了两个帖子都没人回。


// 解密 Base64(3DES(消息体))
public static String decrypt(String args, String key) {
try {
Des3Util d3u = new Des3Util();

Security.addProvider(new com.sun.crypto.provider.SunJCE());

return d3u.decryptFromBase64(key, args, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

public String decryptFromBase64(String key, String src, String encoding) {
try {
BASE64Decoder decoder = new BASE64Decoder();
return new String(
decrypt(key.getBytes(), decoder.decodeBuffer(src)),
encoding);
} catch (Exception ex) {
return null;
// ex.printStackTrace();
}
}


贴一部分java源码,程序开始调用decrypt()函数
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
智商余额不足 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 qingYun1029 的回复:
[quote=引用 1 楼 hwenycocodq520 的回复:] 这个参考过么 http://hi.baidu.com/crazyboy_dc/item/0b00fd0c9932fb26a1312df5
参考过了,谢谢啦! 已经搞定了,是加密模式搞错了。。 贴出修改后的源码:

    public static string DES3Decrypt(string data, string key)
    {
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

        DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
        DES.Mode = CipherMode.ECB;
        DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

        ICryptoTransform DESDecrypt = DES.CreateDecryptor();

        string result = "";
        try
        {
            byte[] Buffer = Convert.FromBase64String(data);
            result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }
        catch (Exception e)
        {

        }
        return result;
    }
[/quote] 多谢分享
qingYun1029 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 qingYun1029 的回复:
[quote=引用 1 楼 hwenycocodq520 的回复:] 这个参考过么 http://hi.baidu.com/crazyboy_dc/item/0b00fd0c9932fb26a1312df5
参考过了,谢谢啦! 已经搞定了,是加密模式搞错了。。 贴出修改后的源码:

    public static string DES3Decrypt(string data, string key)
    {
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

        DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
        DES.Mode = CipherMode.ECB;
        DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

        ICryptoTransform DESDecrypt = DES.CreateDecryptor();

        string result = "";
        try
        {
            byte[] Buffer = Convert.FromBase64String(data);
            result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }
        catch (Exception e)
        {

        }
        return result;
    }
[/quote] 应该是ecb,平台是ecb模式加密的。
qingYun1029 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 hwenycocodq520 的回复:
这个参考过么 http://hi.baidu.com/crazyboy_dc/item/0b00fd0c9932fb26a1312df5
参考过了,谢谢啦! 已经搞定了,是加密模式搞错了。。 贴出修改后的源码:

    public static string DES3Decrypt(string data, string key)
    {
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

        DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
        DES.Mode = CipherMode.ECB;
        DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

        ICryptoTransform DESDecrypt = DES.CreateDecryptor();

        string result = "";
        try
        {
            byte[] Buffer = Convert.FromBase64String(data);
            result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }
        catch (Exception e)
        {

        }
        return result;
    }

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧