当前位置: 首页 > news >正文

C#使用DES加解密数据

C#的DES加解密,同时支持.NET与.NET CF 2.0平台,这样就可以把一个封装好的类同时用在PC/WM手机上。C#的DES比其他语言的DES算法多了个IV实现,其实IV可以设置为随意的8位byte即可,注意要加入desc.Mode = CipherMode.ECB 兼容其他语言的Des加密算法。


直接贴出代码,下面部分代码比较普通,高手们切勿见笑!

using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.Globalization; using System.IO; class Cls_Cryptography { /// <summary> /// IV随便设置为8位 /// </summary> private static byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// 加密字符串 /// </summary> /// <returns>返回密文</returns> public static String EncryptString(String key, String str) { byte[] data = Encoding.Default.GetBytes(str); byte[] result = EncryptData(key, data); if (result != null) return Convert.ToBase64String(result, 0, result.Length); else return ""; } /// <summary> /// 加密二进制数据 /// </summary> /// <returns>返回二进制密文</returns> public static byte[] EncryptData(String key, byte[] data) { byte[] bKey = Encoding.Default.GetBytes(key.Substring(0, 8)); byte[] bIV = IV; try { DESCryptoServiceProvider desc = new DESCryptoServiceProvider(); desc.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法 desc.Padding = PaddingMode.Zeros;//自动补0 MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write); cStream.Write(data, 0, data.Length); cStream.FlushFinalBlock(); return mStream.ToArray(); } catch { return null; } } /// <summary> /// 把密文解密为明文 /// </summary> /// <returns>返回明文</returns> public static String DecryptString(String key, String decryptStr) { byte[] data = Convert.FromBase64String(decryptStr); byte[] result = DecryptData(key, data); if (result != null) return Encoding.Default.GetString(result, 0, result.Length); else return ""; } /// <summary> /// 把二进制密文解密为明文二进制 /// </summary> /// <returns>返回明文二进制</returns> public static byte[] DecryptData(String key, byte[] data) { try { byte[] bKey = Encoding.Default.GetBytes(key.Substring(0, 8)); byte[] bIV = IV; DESCryptoServiceProvider desc = new DESCryptoServiceProvider(); desc.Mode = CipherMode.ECB;//兼容其他语言的Des加密算法 desc.Padding = PaddingMode.Zeros;//自动补0 MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, desc.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write); cStream.Write(data, 0, data.Length); cStream.FlushFinalBlock(); return mStream.ToArray(); } catch { return null; } } }

至于怎么调用。。。很简单的说

String str = Cls_Cryptography.EncryptString("12345678", "12345678"); MessageBox.Show(str); str = Cls_Cryptography.DecryptString("12345678", str); MessageBox.Show(str);

相关文章:

  • Install nodejs on CentOS 7+
  • WindowsMobile上C#通过DirectShow控制摄像头
  • MACBOOK 调教指北
  • 关于Apache无法加载PHP 7.2 curl模块问题的解决办法
  • 墙脆脆?!
  • 在群晖DS218+上编译Fluffos的Docker镜像
  • 将自己的SSH密钥对导入YubiKey 5的PIV和智能卡模块,配合Putty和XShell使用
  • 快照(Snapshot)技术发展综述
  • 国产开源硬件力作CanoKey,替代昂贵的Yubikey!
  • 在CentOS上升级OpenSSL 1.1.1k
  • firewall-cmd 常用命令
  • 俞敏洪在北京大学2008年开学典礼上的发言
  • iptables 之 REJECT 与 DROP 对比
  • Nginx捕获并自定义proxy_pass返回的错误
  • 后台传JSON,前台动态生成一个下拉框
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Apache Zeppelin在Apache Trafodion上的可视化
  • ES6系统学习----从Apollo Client看解构赋值
  • jdbc就是这么简单
  • JS字符串转数字方法总结
  • PHP 7 修改了什么呢 -- 2
  • Python语法速览与机器学习开发环境搭建
  • Redux 中间件分析
  • Sass 快速入门教程
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue ES6 Jade Scss Webpack Gulp
  • 分布式熔断降级平台aegis
  • 猴子数据域名防封接口降低小说被封的风险
  • 两列自适应布局方案整理
  • 学习使用ExpressJS 4.0中的新Router
  • 在Unity中实现一个简单的消息管理器
  • 找一份好的前端工作,起点很重要
  • 阿里云ACE认证学习知识点梳理
  • 树莓派用上kodexplorer也能玩成私有网盘
  • "无招胜有招"nbsp;史上最全的互…
  • #QT(一种朴素的计算器实现方法)
  • (1)(1.11) SiK Radio v2(一)
  • (1)svelte 教程:hello world
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (过滤器)Filter和(监听器)listener
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (算法)Game
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)jdk与jre的区别
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)