WP8开发——TripleDES(3DES)加密算法

最近一个项目中需要运用到加密,由于当初这个项目是采用Java开发的,项目中就是采用的TripleDES加密算法,现在我想改为Windows版本(C#版本);C#语言倒是有TripleDES算法的实现,Sliverlight (.NET 4)中却不直接支持了,所以问题就来了。

本来我打算直接Copy C#中相关支持的dll文件或者源代码用的,但是太多了,我这人比较懒,就想找个可以不那么麻烦的方式。

在Silverlight和Windows Phone 在CodePlex值得推荐开源第三方库是SSH.NET Library

  SSH.NET Library:

  http://sshnet.codeplex.com/

SSH.NET Library库移植灵感是来源于Java版本.不过SSH。NET是完全基于.NET 没有采用任何第三方组件和引用. 其中实现也包含同步和异步的封装. Socket通信库. HTTP代等.其中最为重要的是基于.NET 实现DES和TripleDES[3DES] 两种核心算法. 并且支持.NET 3.5 、Silverlight、Windows Phone.

  当然除了Codeplex上这个比较成熟SSH.NET Library开源组件外.关于DES和TripleDES[3DES] 还可以找到其他类似可选的开源组件.针对Windows Phone 缺乏3DES支持.国外一个WP 开发者Nicolas Humann[Link in] 基于broccoliproducts 的DES, TripleDES and BlowFish in Silverlight 版本库做了进一步的集成和封装. 并成功移植DES和TripleDES[3DES]Windows phone版本:

  Nicolas Humann[Link in] DES And TripleDES[3DES] Component:

  TripleDES Cryptography On Silverlight And Windows Phone

  针对Nicolas Humann[Link in] 这个3DES版本移植ku.在其基础做了进一步的封装.为了是实现对TripleDESCryptoServiceProvider 类[3DES核心实现类]对数据加密和解密的操作. 大概分为两种情况.一种是需要IV密钥Key 另外一种不需要密钥Key 数据基于3DES和DES 加密和解密的封装. 代码你们就自己去下面这个网站上看吧:点击打开链接

当然其中涉及到一个第三方包: Phone7.Fx.Preview.zip (17,05 kb)

有了该包,怎么实现就是小问题了,下面是我的实现方式:

class TripleDESCryptoService
    {
        // 密钥
   private static readonly string SecretKey = "liuyunqiang@lx100$#365#$";
   // 向量
   private static readonly string IV = "01234567";


        /// <summary>
        /// TripleDes 加密
        /// </summary>
        /// <param name="sourceContent">Source Content</param>
        /// <param name="encryptKey">Encrypt Key</param>
        /// <returns>Encrypt Bytes  Array</returns>
        public static string Encrypt(string sourceContent)
        {
            if (string.IsNullOrEmpty(sourceContent))
                return string.Empty;


            var toEncryptSourceStr = Encoding.UTF8.GetBytes(sourceContent);
            var EncryptBytes = RunTripleDes(toEncryptSourceStr, true);
            var encryptFormatStr = Convert.ToBase64String(EncryptBytes, 0, EncryptBytes.Length);


            return encryptFormatStr;
        }


        /// <summary>
        /// TripleDes 解密
        /// </summary>
        /// <param name="encryptKey">Encrypt key can be null</param>
        /// <param name="ivKey">Iv</param>
        /// <param name="encryptBytes">EncryptBytes</param>
        /// <returns>Return String </returns>
        public static string DeEncrypt(string encryptContent)
        {
            if (string.IsNullOrEmpty(encryptContent))
                return string.Empty;


            byte[] encryptBytes = Convert.FromBase64String(encryptContent);
            var DecryptBytes = RunTripleDes(encryptBytes, false);
            string unDecryptFomatStr = Encoding.UTF8.GetString(DecryptBytes, 0, DecryptBytes.Length);


            return unDecryptFomatStr;
        }


        /// <summary>
        /// 设置加密引擎,并输出加/解密二进制结果
        /// </summary>
        /// <param name="input"></param>
        /// <param name="encrypt"></param>
        /// <returns></returns>
        private static byte[] RunTripleDes(byte[] input, bool encrypt)
        {
            var rgbKey = Encoding.UTF8.GetBytes(SecretKey);
            var rgbIV = Encoding.UTF8.GetBytes(IV);
            var keyParam = new DesEdeParameters(rgbKey);
            var ivParam = new ParametersWithIV(keyParam, rgbIV);
            var engine = CipherUtilities.GetCipher("DESede/CBC/PKCS7PADDING");
            engine.Init(encrypt, ivParam);
            var output = engine.DoFinal(input);
            return output;
        }


    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值