-- 作者:卷积内核
-- 发布时间:7/24/2012 10:16:00 AM
-- C# DES加密码解密类
使用方式 string Value = "我们都是一起的一起的 一起的"; string _Des = Zgke.Test.DES.DESEncoder(Value, Encoding.Default, null, null); string _AAA = Zgke.Test.DES.DESDecoder(_Des, Encoding.Default, null, null); MessageBox.Show(_Des, _AAA); 下面是全部的类 1.using System; 2.using System.Text; 3.using System.Security.Cryptography; 4. 5. 6.namespace Zgke.Test 7.{ 8. 9. /// <summary> 10. /// DES加密 解密 11. /// zgke@sina.com 12. /// qq:116149 13. /// </summary> 14. public class DES 15. { 16. /// <summary> 17. /// 对字节进行DES加密 18. /// </summary> 19. /// <param name="p_Value">字节数组</param> 20. /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param> 21. /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param> 22. /// <returns>加密后的BYTE</returns> 23. public static byte[] DESEncoder(byte[] p_Value, byte[] p_Key, byte[] p_IV) 24. { 25. byte[] _RgbKey = p_Key; 26. byte[] _RgbIV = p_IV; 27. 28. if (_RgbKey == null || _RgbKey.Length!= 8) _RgbKey = new byte[] { 0x7A, 0x67, 0x6B, 0x65, 0x40, 0x73, 0x69, 0x6E }; 29. if (_RgbIV == null) _RgbIV = _RgbKey; 30. 31. DESCryptoServiceProvider _Desc = new DESCryptoServiceProvider(); 32. ICryptoTransform _ICrypto = _Desc.CreateEncryptor(_RgbKey, _RgbIV); 33. 34. return _ICrypto.TransformFinalBlock(p_Value, 0, p_Value.Length); 35. } 36. /// <summary> 37. /// 对字节进行DES解密 38. /// </summary> 39. /// <param name="p_Value">字节数组</param> 40. /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param> 41. /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param> 42. /// <returns>解密后的BYTE</returns> 43. public static byte[] DESDecoder(byte[] p_Value, byte[] p_Key, byte[] p_IV) 44. { 45. byte[] _RgbKey = p_Key; 46. byte[] _RgbIV = p_IV; 47. 48. if (_RgbKey == null || _RgbKey.Length != 8) _RgbKey = new byte[] { 0x7A, 0x67, 0x6B, 0x65, 0x40, 0x73, 0x69, 0x6E }; 49. if (_RgbIV == null) _RgbIV = _RgbKey; 50. 51. DESCryptoServiceProvider _Desc = new DESCryptoServiceProvider(); 52. ICryptoTransform _ICrypto = _Desc.CreateDecryptor(_RgbKey, _RgbIV); 53. 54. return _ICrypto.TransformFinalBlock(p_Value, 0, p_Value.Length); 55. } 56. 57. /// <summary> 58. /// DES加密 59. /// </summary> 60. /// <param name="enStr">原始数据</param> 61. /// <param name="p_TextEncoding">数据编码</param> 62. /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param> 63. /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param> 64. /// <returns>加密后的字符穿 00-00-00</returns> 65. public static string DESEncoder(string p_TextValue, System.Text.Encoding p_TextEncoding,byte[] p_Key,byte[] p_IV) 66. { 67. byte[] _DataByte = p_TextEncoding.GetBytes(p_TextValue); 68. return BitConverter.ToString(DESEncoder(_DataByte,p_Key,p_IV)); 69. } 70. 71. /// <summary> 72. /// DES解密 73. /// </summary> 74. /// <param name="p_TextValue">经过加密数据</param> 75. /// <param name="p_TextEncoding">数据编码</param> 76. /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param> 77. /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param> 78. /// <returns>解密后的字符穿</returns> 79. public static string DESDecoder(string p_TextValue, System.Text.Encoding p_TextEncoding,byte[] p_Key,byte[] p_IV) 80. { 81. 82. string[] _ByteText = p_TextValue.Split('-'); 83. byte[] _DataByte =new byte[_ByteText.Length]; 84. for (int i = 0; i != _ByteText.Length; i++) 85. { 86. _DataByte[i] = Convert.ToByte(_ByteText[i], 16); 87. } 88. return p_TextEncoding.GetString(DESDecoder(_DataByte,p_Key,p_IV)); 89. } 90. } 91. 92. 93.}
|