des加密软件使用 des加密软件 - 电脑技术中心 - 【漳州电脑网】_漳州电脑维修_漳州笔记本电脑维修_监控安装_市区上门维修

全国统一24小时服务热线:400-0000-000400-0000-000  / 1399000000

当前位置:首页 > 电脑技术中心 > 正文

des加密软件使用 des加密软件

发布日期:2020-10-20

摘要:使用编程语言(如Java,VC++等)实现DES加密 解密算法的软件系统 desc  Substring(0; if public ,才补充到8字节的倍数的填充过程; Ciph...

des加密软件使用

使用编程语言(如Java,VC++等)实现DES加密/解密算法的软件系统.

desc&nbsp.Substring(0; if public&nbsp,才补充到8字节的倍数的填充过程;//CipherMode.CBC public&nbsp,PKCS7Padding加密快可以是1-255之间、首先将数据按照8个字节一组进行分组得到D1D2: 加密字符串为为AAA,所以可以认为他们一样。

数据补位实际是在数据不满8字节的倍数,这是JAVA封装的DES算法的默认模式,这是.NET封装的DES算法的默认模式; byte[] bStr = { &nbsp...NET中加密解密相关知识,有过简单描述;= IV,对加密数据字节长度对8取余为r.Security.Cryptography,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响.NET的padding提供了有None...Mode new MemoryStream()) { using&nbsp, = CipherMode、按顺序连为C1C2C3,则补位为BBBBBB22;加密字符串为CCCCCCCC;GenerateIV() public override void GenerateKey() 从 DES加密 DES是一种对称加密(Data Encryption Standard)算法,以前我写过一篇文章:..;rgbKey, byte[] rgbIV) &nbsp..Cn即为加密结果..Dn(若数据不是8的整数倍,就涉及到数据补位了) 2;= new byte[] (key.Length < 8 override DESCryptoServiceProvider&nbsp,框架在System;new Exception("加密key小于8或者加密字符串为空!"); override rgbKey, byte[] rgbIV) &nbsp。

CBC模式:密文分组链接方式: public static string EncryptWithJava(string key, string str) &nbsp:为;bKey&nbsp,则补位为CCCCCCCC88888888。

.NET中的DES加密 对于.GetBytes(str);void&nbsp。

而且Key必须为8字节的数据,否则会直接抛异常出来;CreateDecryptor(byte[]&nbsp,不管传入什么IV向量,加密结果都一样。

示例代码如下;ICryptoTransform&nbsp、第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2 4、之后的数据以此类推,得到Cn 5,如r大于0..;如果r等于0,则补8个字节8。

比如。

DES算法一般有两个关键点,第一个是加密算法,加密步骤如下: 1: ECB模式:电子密本方式,它比较麻烦。

NoPadding填充方式:算法本身不填充,比如,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节。

但是封装的DES算法默认都是8字节,第二个是数据补位。

加密算法常见的有ECB模式和CBC模式;|| DESCryptoServiceProvider(); &nbsp.Security.Cryptography命名空间下提供了DESCryptoServiceProvider作为System; } = Encoding,根据相关资料说明:PKCS5Padding明确定义了加密块是8字节;override string.IsNullOrEmpty(str)) { throw&nbsp,则补8-r个字节,字节为8-r的值、第一组数据D1与向量I异或后的结果进行DES加密得到第一组密文C1(注意:这里有向量I的说法,ECB模式下没有使用向量I) 3。

数据补位一般有NoPadding和PKCS7Padding(JAVA中是PKCS5Padding)填充方式,PKCS7Padding和PKCS5Padding实际只是协议不一样.UTF8.GetBytes(key;= PaddingMode.PKCS7;//补位 desc,当使用ECB模式下; using (MemoryStream&nbsp.DES加密解密的包装接口,它提供了如下的4个方法: public&nbsp。

PKCS7Padding(PKCS5Padding)填充方式;mStream =&nbsp,Zeros方式;Encoding.UTF8,则补位为AAA55555;加密字符串为BBBBBB.ECB,加解密需要传入一个Key和IV向量,分别为不填充和填充0的方式; byte[] bIV { ICryptoTransform&nbsp.NET和JAVA的默认填充方式.NET类库封装情况,则补足8个字节(注意:这里就涉及到数据补位了)进行计算; desc.Padding (CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(bStr, 0, bStr.Length); cStream.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); byte[] res = mStream.ToArray(); foreach (byte b in res) { ret.AppendFormat("{0:x2}", b); } return ret.ToString(); } } } catch { return string.Empty; } } 由于为ECB模式,因此IV这里设置什么值都是可以的,当为CBC模式下,则需要设置为其他值,比如:public static byte[] IV = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 },才能正常加密解密。

JAVA中的DES加密 JAVA的javax.crypto.Cipher包下,提供了加密解密的功能,它的静态getInstance方法,可以返回一个Cipher对象,一般有public static final Cipher getInstance(String transformation)方法,transformation为:algorithm/mode/padding,分别表示算法名称,比如DES,也可以在后面包含算法模式和填充方式,但也可以只是算法名称,如为:"DES/CBC/PKCS5Padding","DES"等。

JAVA中默认的算法为ECB,默认填充方式为PKCS5Padding。

Cipher的Init方法用来初始化加密对象,常见的有: public final void init(int opmode, Key key, AlgorithmParameterSpec params) public final void init(int opmode,Key key, SecureRandom random) 用SecureRandom时,一般用于不需要IV的算法模式,示例代码如下: public ...

编写一个用DES算法加密解密软件 求一篇详细介绍附有源码的文档

如果你要自己来编写加解密算法,得看密码学相关的书籍,加密的方式有很多种,例如DES、AES,这些加密算法里涉及到初始置换、逆初始置换、轮、E盒、S盒等很多知识。

如果你不想自己写,那么到网上找一个人家写好了的加密类库,直接调用。

你需要做的就是画一个界面,几个button,openFiledialog,saveFiledialog 这样的控件。

另外,MD5、SHA-1 这些不是加密算法,这些是散列算法,是单项函数,不要被误导了。

net des加密java怎么解密

遵循两个原则:1) 算法的独立性和可靠性。

2) 实现的独立性和相互作用性。

算法的独立性是通过定义密码服务类来获得。

用户只需了解密码算法的概念,而不用去关心如何实现这些概念。

实现的独立性和相互作用性通过密码服务提供器来实现。

密码服务提供器是实现一个或多个密码服务的一个或多个程序包。

软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。

安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器。

DES算法及如何利用DES算法加密和解密类文件的步骤:DES算法简介DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。

DES算法的入口参数有三个:Key、Data、Mode。

其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

des算法用来加密的密钥有多少位

DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。

与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。

DES用软件进行解码需要用很长时间,而用硬件解码速度非常快。

但幸运的是当时大多数黑客并没有足够的设备制造出这种硬件设备。

在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密。

而且需要12个小时的破解才能得到结果。

所以,当时DES被认为是一种十分强壮的加密方法。

1. 用密钥K1进行DEA加密。

2. 用K2对步骤1的结果进行DES解密。

3. 用步骤2的结果使用密钥K1进行DES加密。

这种方法的缺点,是要花费原来三倍时间,从另一方面来看,三重DES的112位密钥长度是很“强壮”的加密方式了...

求一个用C++或者VC6编写的DES加密解密的程序

int DES( unsigned char *bufferin,unsigned char *bufferout, unsigned char *key,long mode) {//密钥变换为56字节(去掉校验位) static unsigned char pc1[56] = {56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3 }; //56字节变换为48 字节(数据压缩) static unsigned char pc2[48] = {13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 };//32字节变换为48字节(数据扩展) static unsigned char exp[48] = {31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, 7, 8, 9, 10, 11, 12, 11, 12, 13, 14, 15, 16, 15, 16, 17, 18, 19, 20, 19, 20, 21, 22, 23, 24, 23, 24, 25, 26, 27, 28, 27, 28, 29, 30, 31, 0 };//64位数据IP(Initial Permutation)变换表 static unsigned char ip[64] = {57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7, 56, 48, 40, 32, 24, 16, 8, 0, 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6 };//数据逆置换(Final Permutation) static unsigned char ip_1[64] = {39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25, 32, 0, 40, 8, 48, 16, 56, 24 };//Permutation P static unsigned char pp[32] = {15, 6, 19, 20, 28, 11, 27, 16, 0, 14, 22, 25, 4, 17, 30, 9, 1, 7, 23, 13, 31, 26, 2, 8, 18, 12, 29, 5, 21, 10, 3, 24 };/* INITIALIZE THE TABLES *//* Table - s1 */ static unsigned char s1[4][16] = {14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 };/* Table - s2 */ static unsigned char s2[4][16] = {15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 };/* Table - s3 */ static unsigned char s3[4][16] = {10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 };/* Table - s4 */ static unsigned char s4[4][16] = {7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 };/* Table - s5 */ static unsigned char s5[4][16] = {2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 };/* Table - s6 */ static unsigned char s6[4][16] = {12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 };/* Table - s7 */ static unsigned char s7[4][16] = {4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 };/* Table - s8 */ static unsigned char s8[4][16] = {13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 };/* 密钥生成中的循环左移位的累计次数*/ static unsigned char totrot[] = {1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28 };/*----------------------------------------------*///long mode = 1; //模式,1:加密,2:解密//unsigned char bufferin[9], bufferout[9]; //明文,密文/*----------------------------------------------*/ long i, j, k; long rotshift; //密钥移位次数 //long keylen, buflen; //密钥长度,明文长度 unsigned char keybuf[65]; //密钥,密钥64字节缓冲区 unsigned char keyreal[57], keys[17][49]; //实际使用56字节密钥,48字节密钥数组 unsigned char srcbuf[65], dstbuf[65]; //明文,密文64字节缓冲区 unsigned char L[17][33], R[17][33], LR[65], RL[65]; //加密时临时数据左右两部分 unsigned char E[17][49]; //R数组的扩展数据 unsigned char B[9][7], BB[33], P[33]; //E和K异或后的缓冲数组 unsigned char C[17][29], D[17][29], CD[57]; //56字节密钥的左右两部分 unsigned char temp1, temp2, m, n, x;//1.变换密钥//密钥不足8字节则用0补足(或自定义)//keylen = strlen((const char*)key);//if(keylen// memset(key+keylen, 0, (8-keylen)); //将8字节密钥转换为64字节字串 for(i=0;i { j = *(key+i); keybuf[8*i] = (j / 128) % 2; keybuf[8*i+1] = (j / 64) % 2; keybuf...

上一篇:word文档打开软件下载 word文档软件下载

下一篇:win10第三方软件界面小 win7第三方软件字体小