3DES加密及.NET弱密钥处理】的更多相关文章

前言 之前写过一篇<探讨.NET Core数据进行3DES加密和解密问题>,最近看到有人提出弱密钥问题,换个强密钥不就完了吗,猜测可能是与第三方对接导致很无奈不能更换密钥,所以产生本文解决.NET Core中3DES弱密钥问题,写下本文,希望对碰到此问题的童鞋有所帮助. 3DES加密或解密弱密钥 在基于.NET Framework中,我们可以使用反射获取到TripleDESCryptoServiceProvider的“_NewEncryptor”私有方法,从而规避判断弱秘钥问题,但在.NET…
背景 智能pos机开发项目需要指定Key加密某些关键字符串.商定采用3DES加密算法. 实践 网海中很多.NET C#编写3DES加密的函数.采集一段简明.成熟的代码,归置于常用程序集.但当指定Key为8位(位数比较短)时,抛出了异常.原来.NET会自动检测Key的长度,认为8位是弱秘钥. 于是发现能手重写的方法,奏效: private static byte[] ThreeDES(byte[] key, byte[] str) {       TripleDESCryptoServicePro…
最近一个项目中,因为服务端是用的java开发的,客户端是用的C#,由于通信部分采用到了3DES加密,所以做个记录,以备以后需要的时候直接用. 这是对方(java)的加密算法,和网上流传的代码也差不多(主密钥直接写死了,方便测试) package org.zwork.market.mina.msg; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import…
最近一个项目中,因为服务端是用的java开发的,客户端是用的C#,由于通信部分采用到了3DES加密,所以做个记录,以备以后需要的时候直接用. 这是对方(java)的加密算法,和网上流传的代码也差不多(主密钥直接写死了,方便测试) package org.zwork.market.mina.msg; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import…
/// <summary> /// Des和3Des算法 /// </summary> public class Des { /// <summary> /// Des加密 /// </summary> /// <param name="pToEncrypt">明文</param> /// <param name="sKey">密钥</param> /// <ret…
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标…
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标…
最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章 一个是C#采用CBC Mode,PKCS7 Padding,Java采用CBC Mode,PKCS5Padding Padding, 另一个是C#采用ECB…
注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ----------------------------------------------------------- /// 说明: /// 转载自网上http://bbs.csdn.net/topics/350158619 /// 并加以扩展 /// 修正: /// 1. 修改正解密后出现 '\0' /// 注: 1. 向量不能小于8位 /// 2. 明文末尾如果是带'\0'字…
近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章 一个是 C#采用 CBC Mode,PKCS7 Padding,Java采用CBC Mode,PKCS5Padding Padding, 另一个是C#采用EC…
原文地址: 使用openssl库实现des,3des加密 主要是调整了一下格式,以及一些变量的类型,以解决在VC2008下无法编译通过的问题. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/des.h> /************************************************************************ *…
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元.  -----------------------------------------------------------------------------------…
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元.  -----------------------------------------------------------------------------------…
原文:C语言单片和C#语言服务器端DES及3DES加密的实现 公司最近在做单片机和C#语言的通信.用的是Socket通信.传输的数据是明文,后来 在会上讨论准备用DES加密(对称加密)来做. 双方约定 相应的“密钥”. 以前做的加密一般都是用C#加密和C#解密.一直以为是个简单的问题,现在和用C写的单片机通信的时候却出了问题. 问题是什么呢? 我找了几个在线加密 解密的网站,还下了几个加密解密的工具.结果相同的数据,用相同的密钥却得到不同的结果. 而且现在网上C语言实现的DES资料基本上是不靠谱…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1d9421 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo } p.p4 { margin: 0.0px 0.0px 0.0px 0.…
1, 采用银联ANSI X9.8标准 PIN xor PAN获取PIN BlOCK 2, 采用3Des进行加密 参考: des和3Des加密算法实现 要点:因为3DES是对称加密算法,key是24位,当只有16位时,后8位取key的前8位 ANSI X9.8标准 PIN xor PAN获取PIN BlOCK (1) ANSI X9.8 Format(不带主账号信息) PIN(个人识别码 Personal Identity Number)总共有8个byte长度,分为两个部分;(类似数据包的格式)…
最近在做PBOC圈存时用到了3DES的加密解密以及MAC计算问题,在网上了解一些知识,复制了一些demo学习,我这里没有深入研究,只是把我用到的和了解的做个总结,便于以后使用和学习. 3DES分双倍长和三倍长,我使用到的是双倍长,加密模式为ECB,代码如下 public static class EncryptUtils { //构造一个对称算法 private static SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider…
本文介绍了3DES加密特性,加密特点,3DES是对称加密,用一个密钥对内容进行加密,必须使用相同的密钥进行解密, 密钥必须配置,而且长度为24位,不足24位,用0位进行补全,本文也顺带介绍了其它加密算法,最后使用java语句实现了3DES加解密 众多的加密手段大致可以分为单项加密和双向加密.单项加密指通过对数据进行摘要计算生成密文,密文不可逆推还原,比如有MD5.SHA等:双向加密则相反,指可以把密文逆推还原成明文,其中双向加密又分为对称加密和非对称加密.对称加密是指数据使用者必须拥有同样的密钥…
前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用着却发现了一点问题,于是下班回来到写这篇博客到深夜才正式解决,请往下看. 3DES数据加密 由于数据需要获取出来并显示于是只能使用对称加密,关于加密这一块网上对于.NET Framework的实现数不胜数,好像对于.NET Core这一块比较少,于是就开始进行研究.这个时候就利用DES或者Tripl…
最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题,下面分享一下,这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章一个是C#采用CBC Mode,PKCS7 Padding,Java采用CBC Mode,PKCS5Padding Padding,另一个是C#采用ECB Mode…
C#3DES加密解密,JAVA.PHP可用 using System; using System.Security.Cryptography; using System.Text; namespace TT.Utilities.Encrypt { public class DES3 { /// <summary> /// utf-8编码 /// 加密模式ECB,填充类型PKCS7 /// </summary> /// <param name="str_content…
最近和别人做接口用到SOCKET TCP/IP方式 其中需要对账号和密码进行3DES加密 对方提供了一个加密比对的软件和JAVA的实现代码 并且给了我们一个长度为32位的密钥 这边需要用PHP来实现! PHP  3des加密的密钥位24位!关于这个密钥长度的问题纠结了很久 最后被哥蒙对了! 32位长度如何转化为24位呢 我是这样做的 将32位的前16位取出来放到后面 这样32+16 = 48位 然后用 $key = pack('H48',$key) 正好是24位! 也就是16进制转化为字节流 这…
最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题,下面分享一下,这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章一个是C#采用CBC Mode,PKCS7 Padding,Java采用CBC Mode,PKCS5Padding Padding,另一个是C#采用ECB Mode…
本文转自:http://www.cnblogs.com/qq278360339/archive/2013/06/05/3119222.html 最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题,下面分享一下,这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章一个是C#采用CBC…
/// <summary> /// C#/PHP/JSP 3DES 加密与解密(只支持UTF-8编码) /// </summary> public class Crypto3DES { /// <summary> /// 默认密钥 /// </summary> private string Keys; /// <summary> /// 密钥与加密字符串不足8字符时的填充字符 /// </summary> private char p…
因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下. 在网上也找了好多,但是都不可以用,没法正式运行,终于找到一个可以运行的,自己又修改了一下,记录下来,以后还可能会用到. 下面安装我要调用的接口文实例: 接口要求:先用3DES对数据进行加密,在用BASE64进行加密.即:BASE64(3DES(value)). 3DES加密规则: 模式:ECB 填充模式:PKCS7Padding 数据块大小:8字节(64位) 初始化向量:无 密钥:XXXXXXXXXXXXXXX…
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/strengthen/p/10346852.html ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章…
最近 一个项目.net 数据采用3DES加密.下面分享一下,这里的KEY采用Base64编码,便用分发,c#的Byte范围是0-255核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章一个是C#采用CBC Mode,PKCS7 Padding另一个是C#采用ECB Mode,PKCS7 Padding对字符加密时,采用的是UTF-8编码 下面是C#代码 /// <summary> /// DES3加密解密 /// </summary> public c…
  第三方的加密规则约定:加密经过3DES加密后的Base64 编码 最近在对接一个第三方接口,请求参数和响应参数全采用3des加密规则,由于我是用.NET对接的,而第三方是Java开发的,所以两种程序之间采用的算法有一点差异,java的3des加密采用的是"DESede/CBC/PKCS5Padding"规则,所以对应的C#规则是"PaddingMode.PKCS7和CipherMode.CBC",使用CBC模式的话在C#下必须传入加密向量IV(固定长度8位),默…
3des加密有不同的加密模式和填充模式,这个网上很多不多说了,只要保证加解密的时候加密模式和填充模式保持一致就可以了 首先对于密钥的生成,java中有2种方式: 1.第一种,采用ECB模式和不填充模式 //加密 public static byte[] des3EncodeECB(byte[] key, byte[] data) throws Exception { Key deskey = null; SecretKeySpec spec = new SecretKeySpec(key,"de…