当前位置: 移动技术网 > IT编程>开发语言>.net > C#与Java AES 加密解密

C#与Java AES 加密解密

2018年12月10日  | 移动技术网IT编程  | 我要评论

中华佛教网站,mimibbs最新地址,寒泉吧

参考文档:

前几天对接java接口,需要c#加密参数,java解密。奈何网上找了一堆大同小异的加解密方法都跟jaca加密的密文不一致,java接口也无法解密,直到看见上面链接的第二种方法。能够正常的解密java加密的密文,说明此方法有效,但这里只有解密,我需要的是加密方法(伸手党做习惯了),没办法读读代码看看是怎么解密的,巧了看到了 createdecryptor 改一下 试一下解密 跟java完全一致 成功!感谢博主!

这是参考文档的博主写的demo:https://github.com/zhu-xb/aes-cryptography

    /// <summary>
    /// aes解密
    /// </summary>
    /// <param name="data"></param>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string aesdecrypt(string content, string key)
    {
        keygenerator kgen = keygenerator.getinstance("aes");
        securerandom securerandom = securerandom.getinstance("sha1prng");
        securerandom.setseed(encoding.ascii.getbytes(key));
        kgen.init(128, securerandom);
        secretkey secretkey = kgen.generatekey();
        byte[] encodeformat = secretkey.getencoded();

        using (aescryptoserviceprovider aesprovider = new aescryptoserviceprovider())
        {
            aesprovider.key = encodeformat;
            aesprovider.mode = ciphermode.ecb;
            aesprovider.padding = paddingmode.pkcs7;
            using (icryptotransform cryptotransform = aesprovider.createdecryptor())
            {
                byte[] inputbuffers = convert.frombase64string(content);
                byte[] results = cryptotransform.transformfinalblock(inputbuffers, 0, inputbuffers.length);
                aesprovider.clear();
                return encoding.utf8.getstring(results);
            }
        }
    }
 /// <summary>
    /// aes加密
    /// </summary>
    /// <param name="data"></param>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string aesencrypt(string content, string key)
    {
        keygenerator kgen = keygenerator.getinstance("aes");
        securerandom securerandom = securerandom.getinstance("sha1prng");
        securerandom.setseed(encoding.ascii.getbytes(key));
        kgen.init(128, securerandom);
        secretkey secretkey = kgen.generatekey();
        byte[] encodeformat = secretkey.getencoded();

        using (aescryptoserviceprovider aesprovider = new aescryptoserviceprovider())
        {
            aesprovider.key = encodeformat;
            aesprovider.mode = ciphermode.ecb;
            aesprovider.padding = paddingmode.pkcs7;
            using (icryptotransform cryptotransform = aesprovider.createencryptor())
            {
                byte[] inputbuffers = encoding.utf8.getbytes(content);
                byte[] results = cryptotransform.transformfinalblock(inputbuffers, 0, inputbuffers.length);
                aesprovider.clear();
                return convert.tobase64string(results);
            }
        }
    }

再次感谢博主 朱小波 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网