1. C# code:
  2.  
  3. using System;
  4. using System.IO;
  5. using System.Security.Cryptography;
  6. using System.Text;
  7.  
  8. namespace LamicSdk.Func
  9. {
  10. public class HelpEncrypt
  11. {
  12. private static string GetDefaultKeyAndIv()
  13. {
  14. return "";
  15. }
  16.  
  17. /// <summary>字符串DES加密函数</summary>
  18. /// <param name="str">被加密字符串</param>
  19. /// <param name="keyAndIv">加密向量和密钥</param>
  20. /// <returns>加密后字符串</returns>
  21. public static string Encode(string str, string keyAndIv = null)
  22. {
  23. try
  24. {
  25. keyAndIv = string.IsNullOrEmpty(keyAndIv) ? GetDefaultKeyAndIv() : keyAndIv;
  26. var provider = new DESCryptoServiceProvider
  27. {
  28. Key = Encoding.ASCII.GetBytes(keyAndIv),
  29. IV = Encoding.ASCII.GetBytes(keyAndIv)
  30. };
  31. var bytes = Encoding.UTF8.GetBytes(str);
  32. using (var memoryStream = new MemoryStream())
  33. {
  34. using (var cryptoStream = new CryptoStream(memoryStream, provider.CreateEncryptor(), CryptoStreamMode.Write))
  35. {
  36. cryptoStream.Write(bytes, 0, bytes.Length);
  37. cryptoStream.FlushFinalBlock();
  38. var builder = new StringBuilder();
  39. foreach (var num in memoryStream.ToArray())
  40. {
  41. builder.AppendFormat("{0:X2}", num);
  42. }
  43. return builder.ToString();
  44. }
  45. }
  46. }
  47. catch (Exception)
  48. {
  49. return null;
  50. }
  51. }
  52.  
  53. /// <summary><![CDATA[字符串DES解密函数]]></summary>
  54. /// <param name="str"><![CDATA[被解密字符串 ]]></param>
  55. /// <param name="keyAndIv">解密向量和密钥</param>
  56. /// <returns><![CDATA[解密后字符串]]></returns>
  57. public static string Decode(string str, string keyAndIv = null)
  58. {
  59. try
  60. {
  61. keyAndIv = string.IsNullOrEmpty(keyAndIv) ? GetDefaultKeyAndIv() : keyAndIv;
  62.  
  63. var provider = new DESCryptoServiceProvider
  64. {
  65. Key = Encoding.ASCII.GetBytes(keyAndIv),
  66. IV = Encoding.ASCII.GetBytes(keyAndIv)
  67. };
  68. var buffer = new byte[str.Length / 2];
  69. for (var i = 0; i < str.Length / 2; i++)
  70. {
  71. var num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);
  72. buffer[i] = (byte)num2;
  73. }
  74. using (var memoryStream = new MemoryStream())
  75. {
  76. using (var cryptoStream =new CryptoStream(memoryStream, provider.CreateDecryptor(), CryptoStreamMode.Write))
  77. {
  78. cryptoStream.Write(buffer, 0, buffer.Length);
  79. cryptoStream.FlushFinalBlock();
  80. return Encoding.UTF8.GetString(memoryStream.ToArray());
  81. }
  82. }
  83. }
  84. catch (Exception)
  85. {
  86. return null;
  87. }
  88. }
  89. }
  90. }
  91.  
  92. python code:
  1. import pyDes
  2. import binascii

#des 加密
k = pyDes.des("", pyDes.CBC,"", pad=None, padmode=pyDes.PAD_PKCS5)
d = k.encrypt("22222222222".encode('utf-8'))
result= binascii.b2a_hex(d)
print(result)

  1.  

  

python 和 C# DES加密的更多相关文章

  1. Python实现基于DES加密源码的文本加密器

    这是自行制作的一个DES文本加密工具 最终效果图: 本加密器支持UTF-8字符的加解密(包含中文),由于其中的编码方式与常用编码方式不同,加密结果与网上工具不同,但是能实现正常加解密. 最终目标: 目 ...

  2. pyDes库 实现python的des加密

    下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBC和ECB两种加密方式 ...

  3. PYTHON实现DES加密及base64源码

    要求是实现DES加密,解密,我是用python实现的,还是有挺多坑的,改bug就改了挺久,加密实现后,解密过程就比较轻松. 另外,附加base64编码源码 要求:输入秘钥为64位二进制数(有效位为56 ...

  4. paip.提升安全性----Des加密 java php python的实现总结

    paip.提升安全性----Des加密 java php python的实现总结 ///////////    uapi         private static String decryptBy ...

  5. python和c#通用一致的des加密采用CBC和PKCS7

    在python下可以下载pydes 下载地址为 http://pydes.sourceforge.net/ 在c#下实现des加密较为简单,如下: using System; using System ...

  6. pyDes 实现 Python 版的 DES 对称加密/解密--转

    https://my.oschina.net/leejun2005/blog/586451 手头有个 Java 版的 DES 加密/解密程序,最近想着将其 Python 重构下,方便后续脚本解析,捣鼓 ...

  7. Python Des加密与解密实现软件注册码、机器码

    原理 判断路径下是否存在识别文件,若存在就解密对比,若不存在就进入机器码注册: 获取系统C盘序列号作为识别ID,并添加随机数作为混淆,生成最终机器码. 将机器码发给软件开发者,开发者将机器码解密后,添 ...

  8. python AES 双向对称加密解密

    高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分 ...

  9. des加密破解

    在爬取某些网站时, 登录等重要操作的返回结果是des加密后的. 如何破解 1, Python 语言采用 pyDes 作为 DES 加解密处理的包. 2,通过请求 http://tool.chacuo. ...

随机推荐

  1. gearman client的doBackground 与doNormal方法的区别

    doNormal方法是阻塞的,需要等到worker处理完之后才返回,否则一直阻塞住; doBackground 方法是非阻塞的,只要将数据发送到gearmand之后,就立马返回,不等待worker的处 ...

  2. Matlab 摄像机标定+畸变校正

    博客转载自:http://blog.csdn.net/Loser__Wang/article/details/51811347 本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行 ...

  3. poj3171 Cleaning Shifts

    传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间. 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理.我们考虑以t1 ...

  4. Android调试之Logcat

    转贴  http://www.cnblogs.com/adison/p/4264284.html 在Android开发过程中,总免不了要调试,无论是Debug,还是Android自带的Logcat,抑 ...

  5. Spring第六篇---AOP

    接着Spring第五篇讲 我们今天将叙述以下几个知识点 1 什么是AOP AOP 是一种思想  横向重复  纵向抽取 在软件业,AOP为Aspect Oriented Programming的缩写,意 ...

  6. 使用Spring加载properties配置文件.md

    背景 类似于datasource.properties之类的配置文件,最初通过Java的Properties类进行处理.这种方式有许多弊端,如每次都需要读取配置文件:若将Properties作为成员变 ...

  7. 处理器适配器(handlerAdapter)执行源码分析(涉及到适配器模式)(九)

    适配器:实现很多接口统一管理. DispatcherServlet 组建的默认配置 HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,A ...

  8. vncviewer 命令行使用

    一.命令行输入密码登录 /usr/bin/vncviewer 192.168.210.80:3此时弹出输入密码框,输入密码即可登录 二.命令行免输入密码登录 (a) /usr/bin/vncviewe ...

  9. java 学习第二篇关系运算符和布尔值

    关系运算符,顾名思义.用来看什么关系.(也就是用来比较) 看下表 JAVA 关系运算符 a=6,b=5 关系运算符 举例 值 解释 > a>b true a大于b < a<b ...

  10. iOS Programming GitHub

    我把学习<iOS编程(第4版)>的相关代码放在了GitHub上: https://github.com/palanceli/iOSProgramming 学了一段时间之后,当要用到某个知识 ...