DES算法的定义DES被称为数据加密标准,即数据加密标准。它是一种使用密钥加密的分组算法,是IBM在1972年开发的对称密码系统加密算法。其密钥长度为56位,明文按***位分组,分组后的明文组与56位密钥逐位替换或交换,形成密文组。
DES算法的历史美国国家标准局于1973年开始研究除国防部以外的其他部门计算机系统的数据加密标准,并于1973年5月15日和1974年8月27日向公众发布了两次征求加密算法的公告。加密算法的目的(通常称为DES密码算法要求)主要如下:
☆提供高质量的数据保护,防止未经授权的披露和未被发现的数据修改;
☆复杂度相当高,使得破译的成本超过了可能的收益,同时要易于理解和掌握;
☆DES密码系统的安全性不应取决于算法的保密性,而只取决于加密密钥的保密性;
☆实现经济,有效运行,适合各种完全不同的应用。
1977年1月,美国政府颁布:采用IBM设计的方案作为非机密数据的官方数据加密标准。
DES加密算法的特点是分组短、密钥短、密码生命周期短、运算速度慢。
DES算法原理DES算法有三个入口参数:密钥、数据和模式。
Key为8字节,共***位,是DES算法的工作密钥;
数据也是8字节***位,是要加密或解密的数据;
DES模式以两种方式工作:加密或解密。
为了保证信息在网络上传输的安全性(防止第三方窃取信息,看到明文),发送方和接收方分别进行加密和解密,这样信息在网络上传输时就相对安全。
DES算法的应用目前在国内。随着“三金工程”特别是“金卡工程”的启动,DES算法被广泛应用于POS、ATM、磁卡和智能卡(ic卡)、加油站、高速公路收费站等领域,以实现关键数据的保密,如信用卡持卡人PIN的加密传输、IC卡与POS的双向认证、金融交易数据包的MAC验证等。
Java中DES加密的例子
导入Java . security . securerandom;
导入javax . crypto . spec . deskey spec;
导入javax . crypto . secret key factory;
导入javax . crypto . secret key;
导入javax . crypto . cipher;
/**
* DES加密简介DES是一种对称加密算法。所谓对称加密算法,就是加密和解密使用同一个密钥的算法。DES加密算法来自IBM的研究,
*后来被美国政府正式采用,然后开始广泛传播。但是这几年用的越来越少了,因为DES用的是56位密钥,加上现代的计算能力,
*可在24小时内破解。但是,在一些简单的应用中,我们仍然可以使用DES加密算法。本文简要解释了DES的J***A实现。
*注意:在DES加密和解密过程中,密钥长度必须是8的倍数。
*/
公共类DES
{
公共DES()
{
}
//测试
公共静态void ***in(String args[])
{
//要加密的内容
String = "测试内容";
//密码,长度应该是8的倍数
string password = " 958802882010913257074332531***8426347857298777357887575757775775772185730847878787316947306034***62061***1957412434434434434444306206061957412424434343434343443444430***3434340
byte[]result = des . encrypt(str . getbytes(),password);
System.out.println("加密后:"+新字符串(结果));
//直接解密以上内容。
尝试
{
byte[] decryResult = DES.decrypt(结果,密码);
System.out.println("解密后:"+new String(decryResult));
} catch(例外e1)
{
E1 . printstacktrace();
}
}
/**
*加密
*
* @param数据源
*字节[]
* @param密码
*字符串
* @返回字节[]
*/
公共静态字节[]加密(字节[]数据源,字符串密码)
{
尝试
{
SecureRandom random = new SecureRandom();
desKey spec desKey = new desKey spec(password . getbytes());
//创建一个密钥工厂,然后用它将DESKeySpec转换成
secretkey factory key factory = secretkey factory . getinstance(" DES ");
secret key secure key = key factory . generate secret(desKey);
cipher对象实际完成加密操作。
cipher cipher = cipher . getinstance(" DES ");
//用密钥初始化密码对象
cipher.init(密码。ENCRYPT_MODE,securekey,random);
//现在,获取数据并加密
//正式执行加密操作。
返回cipher . do final(data source);
} catch(可投掷e)
{
e . printstacktrace();
}
返回null
}
/**
*解密
*
* @param src
*字节[]
* @param密码
*字符串
* @返回字节[]
* @抛出异常
*/
公共静态byte[] decrypt(byte[] src,String password)抛出异常
{
// DES算法需要一个可信的随机数源。
SecureRandom random = new SecureRandom();
//创建一个DESKeySpec对象
desKey spec desKey = new desKey spec(password . getbytes());
//创建密钥工厂
secretkey factory key factory = secretkey factory . getinstance(" DES ");
//将DESKeySpec对象转换为SecretKey对象
secret key secure key = key factory . generate secret(desKey);
//密码对象实际完成解密操作。
cipher cipher = cipher . getinstance(" DES ");
//用密钥初始化密码对象
cipher.init(密码。DECRYPT_MODE,securekey,random);
//真的开始解密操作
返回cipher . do final(src);
}
}
————————————————————
SSL证书是HTTP明文协议升级HTTPS加密协议的重要通道,也是网络安全传输的加密通道。有关SSL证书的更多信息,请关注GDCA。GDCA致力于网络信息安全,已通过WebTrust国际认证,是全球可信的证书颁发机构。GDCA专业的技术团队将根据用户的具体情况为用户提供最好的产品。
本文来自是我太自作多情投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/641115.html