Des 加密cbc模式 padding
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json; namespace 加密接口
{
class Program
{
//uname:zyy144,upwd:ab12356,uid:6846
static void Main(string[] args)
{
string password = "http04";
var json = TextJson("http04", password, "", "内容加【wufdf】", "", "");
string userid = ""; string text64 = Text64(password, json);
var rlt= HttpRequestHelper.Request(userid,text64, "http://localhost/ensms.ashx");
}
public static string Md5Encrypt(string text)
{
var originalBytes = Encoding.UTF8.GetBytes(text);
byte[] encodedBytes;
using (var md5 = new MD5CryptoServiceProvider())
{
encodedBytes = md5.ComputeHash(originalBytes);
}
return ToHexString(encodedBytes);
}
private static readonly char[] HexChars = { '', '', '', '', '', '', '', '', '', '', 'A', 'B', 'C', 'D', 'E', 'F' };
/// <summary>
/// 转换成16进制的字符串形式。
/// </summary>
/// <param name="bytes">要转铁的字节数组</param>
/// <returns>返回转铁后的值</returns>
public static string ToHexString(byte[] bytes)
{
int chArrayLength = bytes.Length * ;
var charArray = new char[chArrayLength];
int index = ;
for (var i = ; i < chArrayLength; i += )
{
byte b = bytes[index++];
charArray[i] = HexChars[b / ];
charArray[i + ] = HexChars[b % ];
}
return new String(charArray);
}
/// <summary>
/// 对指定的字符串,进行md5,32加密,并返回加密后的节字形式的文本。
/// </summary>
/// <param name="text">要加密码的字符串</param>
/// <param name="encoding">指定编码方式</param>
/// <returns>返回加密后的节字形式的文本</returns>
public static string Md5Encrypt(string text, Encoding encoding)
{
var originalBytes = encoding.GetBytes(text);
byte[] encodedBytes;
using (var md5 = new MD5CryptoServiceProvider())
{
encodedBytes = md5.ComputeHash(originalBytes);
}
return ToHexString(encodedBytes);
}
/// <summary>
/// 生成json 字符串对象
/// </summary>
/// <param name="username"></param>
/// <param name="password"></param>
/// <param name="mobile"></param>
/// <param name="text"></param>
/// <param name="ext"></param>
/// <param name="sendTime"></param>
/// <returns></returns>
private static string TextJson(string username,string password,string mobile,string text ,string ext,string sendTime)
{
string Stamp = DateTime.Now.ToString("MMddHHmmss");
Text64Data text64Data = new Text64Data() {
UserName = username,
Secret = Md5Encrypt(password + Stamp),
Stamp = Stamp,
Moblie=mobile,
Text=text,
Ext=ext,
SendTime =sendTime
};
var json= JsonConvert.SerializeObject(text64Data);
return json;
}
/// <summary>
///
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
private static byte[] GetKey(string password)
{
// Key 的生成方式,将Password转为字节数组,取前8位(不足8位,右侧补字节0)
password = password.Length >= ? password.Substring(, ) : password;
byte[] pwd = Encoding.UTF8.GetBytes(password);
byte[] key = new byte[];
for (int i = ; i < pwd.Length; i++)
{
key[i] = pwd[i];
}
return key;
}
/// <summary>
/// base64string
/// </summary>
/// <param name="password"></param>
/// <param name="json"></param>
/// <returns></returns>
private static string Text64(string password,string json)
{ byte[] key = GetKey(password);
byte[] content = Encoding.UTF8.GetBytes(json);
return Convert.ToBase64String( DESEncrypt(content,key));
}
/// <summary>
/// des加密
/// </summary>
/// <param name="original"></param>
/// <param name="key"></param>
/// <returns></returns>
public static byte[] DESEncrypt(byte[] original, byte[] key)
{ using (var des = new DESCryptoServiceProvider())
{
des.Padding = PaddingMode.PKCS7;
des.Mode = CipherMode.CBC;
des.Key = key;
des.IV = key;
using (var ms = new System.IO.MemoryStream())
{
var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(original, , original.Length);
cs.FlushFinalBlock();
cs.Close();
cs.Dispose(); return ms.ToArray();
}
}
}
}
public class Text64Data
{
public string UserName { get; set; }
public string Secret { get; set; }
public string Stamp { get; set; } public string Moblie { get; set; }
public string Text { get; set; }
public string Ext { get; set; }
//yyyy-MM-dd HH:mm:ss
public string SendTime { get; set; }
} }
注意编码格式:很重要
Des 加密cbc模式 padding的更多相关文章
- C++ 使用openssl库实现 DES 加密——CBC模式 && RSA加密——公加私解——私加公解
之前工作上需要用C++把软件生成的用户序列号用des加密cbc的模式,加密后为二进制,转化为十六进制,然后提供给java写的授权码管理平台. java平台会根据用户序列号,生成一个授权码,授权码是用r ...
- AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】
原文:AES加密CBC模式兼容互通四种编程语言平台[PHP.Javascript.Java.C#] 由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理: 先简单从百度找来介绍: ...
- DES加密ECB(模式) golang
Java默认DES算法使用DES/ECB/PKCS5Padding,而golang认为这种方式是不安全的,所以故意没有提供这种加密方式,那如果我们还是要用到怎么办?下面贴上golang版的DES EC ...
- C++调用openssl实现DES加密解密cbc模式 zeropadding填充方式 pkcs5padding填充方式 pkcs7padding填充方式
============================================== des cbc 加密 zeropadding填充方式 ======================= ...
- DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项
DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...
- C#和PHP加密结果一致的DES加密解密算法。php实现和c#一致的DES加密解密
DES加密算法 des对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密 ...
- Android DES加密的CBC模式加密解密和ECB模式加密解密
DES加密共有四种模式:电子密码本模式(ECB).加密分组链接模式(CBC).加密反馈模式(CFB)和输出反馈模式(OFB). CBC模式加密: import java.security.Key; i ...
- DES加密模式详解
DES加密模式详解 http://www.cnblogs.com/Lawson/archive/2012/05/20/2510781.html http://www.blogjava.net/wayn ...
- 关于DES加密中的 DESede/CBC/PKCS5Padding
今天看到一段3DES加密算法的代码,用的参数是DESede/CBC/PKCS5Padding,感觉比较陌生,于是学习了一下. 遇到的java代码如下: Cipher cipher=Cipher.get ...
随机推荐
- Python基本循环实例Day 1
输入正确的用户名和密码,显示登陆界面,超过三次输入错误则锁定,定义字符串记得加上单引号,数字可以int定义,while循环和if循环语句后加上:,break不加: print("------ ...
- oracle基础入门(二)
一:Oracle和plsql都安装成功 我们现在要链接自己本机Oracle 或者 远程服务器的Oracle 所有我们要找到tnsnames.ora 找到PLsql的 db_1我的地址F:oracle\ ...
- ArcGIS Engine 9.3启动程序报错
报错1: 没有注册类 (异常来自 HRESULT:0x80040154 解决办法: 由于是X64系统,将项目的生成目标该成X86就解决了. 报错2: 正试图在 OS 加载程序锁内执行托管代码.不要尝试 ...
- LintCode-最大子数组差
给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大. 返回这个最大的差值. 您在真实的面试中是否遇到过这个题? Yes 例子 给出数组[1 ...
- Qt源码编译
Qt源码编译 eryar@163.com Key words. Qt, 源码编译 1.Introduction 随着Qt版本升级,源码编译出来的库体积越来越大.如果只是用Qt来做GUI,Qt提供的预编 ...
- IOS学习之斯坦福大学IOS开发课程笔记(第六课)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是怎样协同工作的.到眼下为止.全 ...
- 51nod1004 n^n的末位数字
题目来源: Author Ignatius.L (Hdu 1061) 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给出一个整数N,输出N^N(N的 ...
- NewtonSoft对象转json时,把 NULL 转 "" , 过滤 NULL, DateTime 时间类型去除 T
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter(); timeConverter.DateTimeFormat = &quo ...
- SpringMVC & Struts2
这两个框架可谓Java中的经典,Java开发必懂的框架,这两天在面试中又问道两者的异同.这里简单做了整理供大家參考交流. 概念:
- D. Dreamoon and Sets(Codeforces Round #272)
D. Dreamoon and Sets time limit per test 1 second memory limit per test 256 megabytes input standard ...