python 和 C# DES加密
- C# code:
- using System;
- using System.IO;
- using System.Security.Cryptography;
- using System.Text;
- namespace LamicSdk.Func
- {
- public class HelpEncrypt
- {
- private static string GetDefaultKeyAndIv()
- {
- return "";
- }
- /// <summary>字符串DES加密函数</summary>
- /// <param name="str">被加密字符串</param>
- /// <param name="keyAndIv">加密向量和密钥</param>
- /// <returns>加密后字符串</returns>
- public static string Encode(string str, string keyAndIv = null)
- {
- try
- {
- keyAndIv = string.IsNullOrEmpty(keyAndIv) ? GetDefaultKeyAndIv() : keyAndIv;
- var provider = new DESCryptoServiceProvider
- {
- Key = Encoding.ASCII.GetBytes(keyAndIv),
- IV = Encoding.ASCII.GetBytes(keyAndIv)
- };
- var bytes = Encoding.UTF8.GetBytes(str);
- using (var memoryStream = new MemoryStream())
- {
- using (var cryptoStream = new CryptoStream(memoryStream, provider.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cryptoStream.Write(bytes, 0, bytes.Length);
- cryptoStream.FlushFinalBlock();
- var builder = new StringBuilder();
- foreach (var num in memoryStream.ToArray())
- {
- builder.AppendFormat("{0:X2}", num);
- }
- return builder.ToString();
- }
- }
- }
- catch (Exception)
- {
- return null;
- }
- }
- /// <summary><![CDATA[字符串DES解密函数]]></summary>
- /// <param name="str"><![CDATA[被解密字符串 ]]></param>
- /// <param name="keyAndIv">解密向量和密钥</param>
- /// <returns><![CDATA[解密后字符串]]></returns>
- public static string Decode(string str, string keyAndIv = null)
- {
- try
- {
- keyAndIv = string.IsNullOrEmpty(keyAndIv) ? GetDefaultKeyAndIv() : keyAndIv;
- var provider = new DESCryptoServiceProvider
- {
- Key = Encoding.ASCII.GetBytes(keyAndIv),
- IV = Encoding.ASCII.GetBytes(keyAndIv)
- };
- var buffer = new byte[str.Length / 2];
- for (var i = 0; i < str.Length / 2; i++)
- {
- var num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);
- buffer[i] = (byte)num2;
- }
- using (var memoryStream = new MemoryStream())
- {
- using (var cryptoStream =new CryptoStream(memoryStream, provider.CreateDecryptor(), CryptoStreamMode.Write))
- {
- cryptoStream.Write(buffer, 0, buffer.Length);
- cryptoStream.FlushFinalBlock();
- return Encoding.UTF8.GetString(memoryStream.ToArray());
- }
- }
- }
- catch (Exception)
- {
- return null;
- }
- }
- }
- }
- python code:
- import pyDes
- 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)
python 和 C# DES加密的更多相关文章
- Python实现基于DES加密源码的文本加密器
这是自行制作的一个DES文本加密工具 最终效果图: 本加密器支持UTF-8字符的加解密(包含中文),由于其中的编码方式与常用编码方式不同,加密结果与网上工具不同,但是能实现正常加解密. 最终目标: 目 ...
- pyDes库 实现python的des加密
下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBC和ECB两种加密方式 ...
- PYTHON实现DES加密及base64源码
要求是实现DES加密,解密,我是用python实现的,还是有挺多坑的,改bug就改了挺久,加密实现后,解密过程就比较轻松. 另外,附加base64编码源码 要求:输入秘钥为64位二进制数(有效位为56 ...
- paip.提升安全性----Des加密 java php python的实现总结
paip.提升安全性----Des加密 java php python的实现总结 /////////// uapi private static String decryptBy ...
- python和c#通用一致的des加密采用CBC和PKCS7
在python下可以下载pydes 下载地址为 http://pydes.sourceforge.net/ 在c#下实现des加密较为简单,如下: using System; using System ...
- pyDes 实现 Python 版的 DES 对称加密/解密--转
https://my.oschina.net/leejun2005/blog/586451 手头有个 Java 版的 DES 加密/解密程序,最近想着将其 Python 重构下,方便后续脚本解析,捣鼓 ...
- Python Des加密与解密实现软件注册码、机器码
原理 判断路径下是否存在识别文件,若存在就解密对比,若不存在就进入机器码注册: 获取系统C盘序列号作为识别ID,并添加随机数作为混淆,生成最终机器码. 将机器码发给软件开发者,开发者将机器码解密后,添 ...
- python AES 双向对称加密解密
高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分 ...
- des加密破解
在爬取某些网站时, 登录等重要操作的返回结果是des加密后的. 如何破解 1, Python 语言采用 pyDes 作为 DES 加解密处理的包. 2,通过请求 http://tool.chacuo. ...
随机推荐
- gearman client的doBackground 与doNormal方法的区别
doNormal方法是阻塞的,需要等到worker处理完之后才返回,否则一直阻塞住; doBackground 方法是非阻塞的,只要将数据发送到gearmand之后,就立马返回,不等待worker的处 ...
- Matlab 摄像机标定+畸变校正
博客转载自:http://blog.csdn.net/Loser__Wang/article/details/51811347 本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行 ...
- poj3171 Cleaning Shifts
传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间. 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理.我们考虑以t1 ...
- Android调试之Logcat
转贴 http://www.cnblogs.com/adison/p/4264284.html 在Android开发过程中,总免不了要调试,无论是Debug,还是Android自带的Logcat,抑 ...
- Spring第六篇---AOP
接着Spring第五篇讲 我们今天将叙述以下几个知识点 1 什么是AOP AOP 是一种思想 横向重复 纵向抽取 在软件业,AOP为Aspect Oriented Programming的缩写,意 ...
- 使用Spring加载properties配置文件.md
背景 类似于datasource.properties之类的配置文件,最初通过Java的Properties类进行处理.这种方式有许多弊端,如每次都需要读取配置文件:若将Properties作为成员变 ...
- 处理器适配器(handlerAdapter)执行源码分析(涉及到适配器模式)(九)
适配器:实现很多接口统一管理. DispatcherServlet 组建的默认配置 HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,A ...
- vncviewer 命令行使用
一.命令行输入密码登录 /usr/bin/vncviewer 192.168.210.80:3此时弹出输入密码框,输入密码即可登录 二.命令行免输入密码登录 (a) /usr/bin/vncviewe ...
- java 学习第二篇关系运算符和布尔值
关系运算符,顾名思义.用来看什么关系.(也就是用来比较) 看下表 JAVA 关系运算符 a=6,b=5 关系运算符 举例 值 解释 > a>b true a大于b < a<b ...
- iOS Programming GitHub
我把学习<iOS编程(第4版)>的相关代码放在了GitHub上: https://github.com/palanceli/iOSProgramming 学了一段时间之后,当要用到某个知识 ...