‘壹’ 什么是DES加密
一种对称加密算法,DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
‘贰’ DES加密问题
DES对64位二进制数据加密,产生64位密文数据,实际密钥长度为56位(有8位用于奇偶校验,解密时的过程和加密时相似,但密钥的顺序正好相反),这个标准由美国国家安全局和国家标准与技术局来管理。DES的成功应用是在银行业中的电子资金转账(EFT)领域中。现在DES也可由硬件实现,AT&T首先用LSI芯片实现了DES的全部工作模式,该产品称为数据加密处理机DEP。另一个系统是国际数据加密算法(IDEA),它比DES的加密性好,而且计算机功能也不需要那么强。在未来,它的应用将被推广到各个领域。IDEA加密标准由PGP(Pretty Good Privacy)系统使用,PGP是一种可以为普通电子邮件用户提供加密、解密方案的安全系统。在PGP系统中,使用IDEA(分组长度128bit)、RSA(用于数字签名、密钥管理)、MD5(用于数据压缩)算法,它不但可以对你的邮件保密以防止非授权者阅读,还能对你的邮件加以数字签名从而使收信人确信邮件是由你发出。--
‘叁’ delphi实现DES字节流加密,该怎么解决
在 CnPack 提供的源代码包里,提供了 des 加解密单元文件,提供了以下四个功能函数:
function DESEncryptStr(Str, Key: AnsiString): AnsiString;
{* 传入明文与加密 Key,DES 加密返回密文,
注:由于密文可能含有扩展 ASCII 字符,因此在 DELPHI 2009 或以上版本中,请用
AnsiString 类型的变量接收返回值,以避免出现多余的 Unicode 转换而导致解密出错}
function DESDecryptStr(Str, Key: AnsiString): AnsiString;
{* 传入密文与加密 Key,DES 解密返回明文}
function DESEncryptStrToHex(Str, Key: AnsiString): AnsiString;
{* 传入明文与加密 Key,DES 加密返回转换成十六进制的密文}
function DESDecryptStrFromHex(StrHex, Key: AnsiString): AnsiString;
{* 传入十六进制的密文与加密 Key,DES 解密返回明文}
‘肆’ 什么是DES加密
DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间
可以使用加密软件对数据进行加密
如文件夹加密超级大师
采用先进的加密算法,使您的文件加密后,真正的达到超高的加密强度,让您的加密文件无懈可击,没有密码无法解密。
五种加密方法:
闪电加密速度快,对文件夹没有大小限制,无论多大都可以在几秒内加密完毕。
隐藏加密后,数据被彻底隐藏,只能通过软件打开或解密。
金钻加密是把文件夹加密成一个加密文件, 打开或解密时需要输入密码。特点是安全性极高,没有正确密码任何人无法打开或解密。适用于比较小一点的重要文件存放的文件夹。
全面加密是把文件夹里面的所有文件加密成加密文件, 打开文件夹不需要密码,但是打开里面的每个文件都需要密码。
移动加密是把数据加密成exe文件,可以移动到其他没有安装软件的电脑上解密,也可以通过网络传输。
注意:金钻加密,移动加密,全面加密忘记密码无法解密,所以请您牢记密码。
‘伍’ 秘钥、公钥匙、认证之间的关系 DES、RSA、AES 数据加密传输
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。
常用的有:DES、AES
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
常用的有:RSA
(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送 给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身 份认证的过程如下:
上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
DES是Data Encryption Standard(数据加密标准)的缩写,DES算法为密码体制中的对称密码体制。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。
DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。
特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。 DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间。
DES现在已经不视为一种安全的加密算法,因为它使用的56位秘钥过短,以现代计算能力,24小时内即可能被破解。也有一些分析报告提出了该算法的理论上的弱点,虽然实际情况未必出现。该标准在最近已经被 高级加密标准 (AES)所取代。
高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES ,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
AES的区块长度固定为128 位元 ,密钥长度则可以是128,192或256位元。
RSA加密算法是一种 非对称加密算法 。在 公钥加密标准 和 电子商业 中RSA被广泛使用。RSA是 1977年 由 罗纳德·李维斯特 (Ron Rivest)、 阿迪·萨莫尔 (Adi Shamir)和 伦纳德·阿德曼 (Leonard Adleman)一起提出的。当时他们三人都在 麻省理工学院 工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA算法利用两个很大的质数相乘所产生的乘积来加密。这两个质数无论哪一个先与原文件编码相乘,对文件加密,均可由另一个质数再相乘来解密。但要用一个 质数来求出另一个质数,则是十分困难的。因此将这一对质数称为密钥对(Key Pair)。在加密应用时,某个用户总是将一个密钥公开,让需发信的人员将信息用其公共密钥加密后发给该用户,而一旦信息加密后,只有用该用户一个人知道 的私用密钥才能解密。具有数字凭证身份的人员的公共密钥可在网上查到,亦可在请对方发信息时主动将公共密钥传给对方,这样保证在Internet上传输信 息的保密和安全。
开发中:
客户端发送的敏感数据时需要加密处理,客户端数据采用公钥加密,服务器用对应的秘钥解密,客户端保存公钥,服务器保存秘钥
服务器发送的数据也要加密时,服务器端数据采用秘钥加密,客户端数据用对应的公钥加密,客户端保存公钥,服务器保存秘钥
服务器要认证客户端时,客户端数据采用秘钥加密,服务器用对应的公钥解密,客户端保留秘钥,服务器保留公钥
常用加解密方案:
如果想要更加安全一点,可以在仿照微信的通信,每次都在传输数据上加上一个32为随机数和并将数据按照一定的规则生成一个校验sign
‘陆’ 使用.net内置的DES进行加密
好了,明白了它的License种类,我们得看看它是如何验证合法的License的,换句话说就是它的License是如何构成的。它通过定位/bin目录下的License文件,License文件由类名(FreeTextBox)+ “.lic”构成。FreeTextBox.Lic文件内容分三个部分,第一部分为明文FreeTextBox License,也就是类名+ License”字符串,第二部分为[License种类的加密文本],加密算法采用的.NET内置的DES,用于DES加密的密钥和偏移量均为{ 0x39, 0x48, 0x42, 50, 0x38, 0x31, 70, 0x36 },当然它不是直接对文本加密的,做了一个小小的处理,这个处理就是加上原文本的长度,并预留5位,不够则补零,例如字符串DistributionLicense,那用于加密的就是00019DistributionLicense,因为字符串DistributionLicense的长度是19位,前面还有3个空位就补3个零。这样加密后的结果就是=,注意需要用[]分隔,FreeTextBox设计者出于方便使用正则匹配所以使用[]来分隔,第三部分就是你注册标识的加密文本,当然也有[],处理方式跟第二部分的一样,例如我的域名为Ycweb.Net,我想以此作为标识来生成License,于是对字符串00009Ycweb.Net进行DES加密,结果为tyn3Gf1Y5GH2VphAJ2U++g==,所以综合这个三个部分的内容,就构成了一个完整的License文件内容,整理一下就是: FreeTextBox License [=] [tyn3Gf1Y5GH2VphAJ2U++g==] 这是Distribution的License,如果是Professional的License,内容就是: FreeTextBox License [tyn3Gf1Y5GH2VphAJ2U++g==] 补充: 我现在是要加密的方法,求一个函数,将原文:00019DistributionLicense,加密为密文:=],不知所谓,连内容都不看就回答了 补充: 又多一个不看内容的,文章里面不是说了吗:
‘柒’ DES 加密后的密钥,如何保存或发送
import java.security.Key;
import java.security.KeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class Test {
////这块不熟还请自己测试
public static void main(String [] args) {
String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish
KeyGenerator keygen;
try {
keygen = KeyGenerator.getInstance(Algorithm);
SecretKey deskey = keygen.generateKey();
Cipher ci = Cipher.getInstance("DES");
//将其包装为byte[]发送
byte[] b = ci.wrap(deskey);
//发送
//...
//接收到后
//解封装
Key key = ci.unwrap(b, Algorithm, Cipher.PRIVATE_KEY);
//...
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
}
}
}
‘捌’ DES算法怎么用来加密文件(图片、文档、音频、视频等)
这个我不清楚。
加密文件(图片、文档、音频、视频等),我使用的是超级加密3000.
超级加密3000的主要功能有文件加密(保护文本,文档,电子表,图片,网页等内容),文件夹加密、隐藏、加锁,文件隐藏、粉碎等。可满足日常工作和生活中的安全保密需求,您尽可放心使用。
‘玖’ 文件传输加密都有哪些方法呢
DES与AES的比较
自DES算法公诸于世以来,学术界围绕它的安全性等方面进行了研究并展开了激烈的争论。在技术上,对DES的批评主要集中在以下几个方面:
1、作为分组密码,DES的加密单位仅有64位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。
2、DES的密钥的位数太短,只有56比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,在现有技术下用穷举法寻找密钥已趋于可行。
3、DES不能对抗差分和线性密码分析。
4、DES用户实际使用的密钥长度为56bit,理论上最大加密强度为256。DES算法要提高加密强度(例如增加密钥长度),则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面都无法提高DES算法的加密强度。
采用DES与RSA相结合的应用,使它们的优缺点正好互补,即DES加密速度快,适合加密较长的报文,可用其加密明文;RSA加密速度慢,安全性好,应用于DES 密钥的加密,可解决DES 密钥分配的问题。
目前这种RSA和DES结合的方法已成为EMAIL保密通信标准。