A. python有没有秘钥加密的函数,比如说:function(秘钥, 文件),有没有这样的function的函数吗
python的标准库里面没有加密的,只有hashing的算法。你要是需要加密的话,有另外的一个PyCrypto库可以用(但是我不知道pycrypto的license是什么,你用之前要自己看看是不是适合你的project使用)。
B. 关于C# DES加密时密钥问题
1)DES加密程序中,保存key和iv有两种做法
【Ⅰ】将key和iv“写死”在在程序中,一旦程序编译发布后,key和iv就无法改变
【Ⅱ】将保存key和iv保存在配置文件中,程序发布后,可以随时改变配置文件中的key和iv
为了增加安全性,在第二种方法中,配置文件中保存的不是key和iv的明文,而是用md5加密后的key和iv。这样,即使你的程序发布出去,别人也无法知道程序中真正使用的key和iv是什么,增加了安全性。
System.Web.Security.FormsAuthentication.(sKey, "md5").Substring(0, 8)的作用是从配置文件取出加密的key和iv,然后用md5将解密,从而得到真正的key和iv
2)明白了1)后,第二个问题就容易理解了。
C. md5加密需要密钥吗
md5本身只是一个特征值 不需要秘钥 也不属于加密
所谓的md5加密 都是配合其他加密算法的
是否需要秘钥,需要看采用的加密算法。
D. 请问DES加密算法中的这3个函数(获取密钥函数,加密函数与解密函数)的含义是什么(附函数算法)
/// <summary>
/// DES密钥
/// </summary>
private const string KEY_64 = "11111111";//注意了,是8个字符,64位
/// <summary>
/// DES向量
/// </summary>
private const string IV_64 = "11111111";
/// <summary>
/// 加密DES
/// </summary>
/// <param name="data">需要加密的字符串</param>
/// <returns>加密后的字符串</returns>
public static string EncodeDES(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
/// <summary>
/// 解密DES
/// </summary>
/// <param name="data">需要解密的字符串</param>
/// <returns>解密后的字符串</returns>
public static string DecodeDES(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
E. 加密算法和密钥的作用
一、加密算法:将原有的明文信息转化为看似无规律的密文。收信方需要对应的解密密钥,采用对应的解密方法将密文还原为明文(能看懂有意义的信息)。
二、密钥分为加密密钥和解密密钥,对于“对称加密算法”,这两者是一样的;而“非对称加密算法”的密钥分为“公开密钥”和“私有密钥”,用公开密钥加密,则需要私有密钥解密;反之用私有密钥加密,则需要公开密钥解密,是可以互换的。
三、现代的计算机加密算法比较复杂,要弄懂是需要离散数学、高等代数等知识,不可能在这里讲明白。
四、以“凯撒移位密码”这种最古来的简单密码来讲解什么是加密算法和密钥:
4.1)“凯撒密码”在《恺撒传》中有记载,凯撒密码是将每一个字母用字母表中的该字母后的第三个字母代替。尽管历史记载的凯撒密码只用了3个位置的移位,但显然从1到25个位置的移位我们都可以使用, 因此,为了使密码有更高的安全性,单字母替换密码就出现了。
若用每个字母的后11位替换当前字母,可以认为密钥=11。
如此得到的密码表为:
明码表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z(即26个字母表)
密码表 L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
加密的方法很简单,就是讲明码字母换成对应的密码表字母。
如:明文 I LOVE YOU
密文 T WZGP JZF
在当时,这样简单的密码就足够起到保密作用;但到近代都已经很容易被破解了,更不用说现代有计算机秒破了!
4.2)其他加密算法
有兴趣可以了解更复杂的加密算法:如近代的“维吉尼亚算法”,还属于字母位移加密,好懂!而现代计算机文件深度加密常用的“AES加密算法”,原理很复杂,需要高等数学等知识才能读懂。
F. a与b通信加密时用的密钥是什么
这个都是自己设定的。
A和B进行加密通信时,B首先要生成一对密钥。一个是公钥,给A,B自己持有私钥。A使用B的公钥加密要加密发送的内容,然后B在通过自己的私钥解密内容。
这个是JAVA的非对称性加密算法,Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
G. wpa2加密是不是连接的时候必须要密钥
这个我可以很明确的告诉你,别人进的时候是需要密码的,而之所以你自己不需要密码是因为现在的软件太智能了,只要你连接成功过,就会默认“当此网络在范围内时自动连接”。(你可以打开你的无线网络列表,查看下属性就知道了。)如果不需要自动连接,想每次都输密码的话,就把它前面的勾去掉。
H. 加密方式有几种
加密方式的种类:
1、MD5
一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。
2、对称加密
对称加密采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
3、非对称加密
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
(8)加密函数需要密钥吗扩展阅读
非对称加密工作过程
1、乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。
2、得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。
3、乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。
同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
I. 加密和解密必须依赖密钥和什么
密码学中两种常见的密码算法为对称密码算法(单钥密码算法)和非对称密码算法(公钥密码算法)。 对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。
J. 对数据进行AES、DES等加密时,需要使用密钥,密钥要如何存储才能保证其安全性呢,即不被窃取
分开存放,比如2个人,每人知道一半。用起来麻烦,但安全性显着提高