pythondes解密
A. 有python下DES加密解密模块吗
一个例子给你参考;
>>> import win32com.client
>>> EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
>>> EncryptedData.Algorithm.KeyLength = 5
>>> EncryptedData.Algorithm.Name = 2
>>> EncryptedData.SetSecret('mypass')
>>> EncryptedData.Content = 'Hello world'
>>> s = EncryptedData.Encrypt()
>>> s
u'\r\nk6mhbmNo7AQQPzxLV17fVCCYUGLD+\r\nX4Vw\r\n'
>>> EncryptedData.Decrypt(s)
>>> EncryptedData.Content
u'Hello world'
B. 求python中的恺撒密码的加密,解密,以及破解的程序
凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。
如下代码是以偏移量为13展开计算的。123
源代码如下:
sr1="abcdefghijklmnopqrstuvwxyz"sr2=sr1.upper()
sr=sr1+sr1+sr2+sr2
st="The Zen of Python"sResult=""for j in st: if j==" ":
sResult = sResult +" "
continue
i=sr.find(j) if(i>-1):
sResult=sResult+sr[i+13]print sResult12345678910111213
运行结果为:
Gur Mra bs Clguba
C. 跪求Python用两个密钥进行3DES加解密的代码(CBC方式),我用了下pyDes但是觉得填充字符有问题,急!!!
可以试试pycrypto包的Crypto.Cipher.DES3模块
D. 用python加密的可以用java解密吗
服务器端使用python开发,生成一组1024bit的公钥和私钥。通过http把公钥交给android上的app(Java开发的)。App利用公钥加密用户名和密码,再Post到服务器上,服务器利用私钥解密然后验证,验证成功后给App一个Token。
其实就是一个保护用户登录的一个操作。
Python上RSA加密的库挺多的,最开始使用的是rsa,因为比较简单嘛!测试的时候也是用 python模拟App的访问,顺利通过!
然而App开发者反馈,python测试脚本没法移植到java上,因为java的加密解密模块需要更加精细的算法细节指定,否则java加密过的数据python是解不出来的。
当初就是因为rsa模块简单,不需要注重细节才选的,自己又不是专业搞加密解密的。没办法了,只能硬着头皮,捋了一遍RSA的加密原理。网上还是有比较多的讲述比较好的文章,比如RSA算法原理
原理是懂了,但具体到python和java的区别上,还是一头雾水。最终python的RSA模块换成Crypto,因为支持的参数比较多。搜了很多网站讲的都不是很详细,stackflow上有几篇还可以,借鉴了一下,最后测试通过了。还是直接上代码吧。
Java代码
//下面这行指定了RSA算法的细节,必须更python对应
private static String RSA_CONFIGURATION = "RSA/ECB/OAEPWithSHA-256AndMGF1Padding"; //这个貌似需要安装指定的provider模块,这里没有使用
private static String RSA_PROVIDER = "BC"; //解密 Key:私钥
public static String decrypt(Key key, String encryptedString){ try {
Cipher c = Cipher.getInstance(RSA_CONFIGURATION);
c.init(Cipher.DECRYPT_MODE, key, new OAEPParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256,
PSource.PSpecified.DEFAULT)); byte[] decodedBytes;
decodedBytes = c.doFinal(Base64.decode(encryptedString.getBytes("UTF-8"))); return new String(decodedBytes, "UTF-8");
} catch (IllegalBlockSizeException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (Base64DecodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeyException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch ( e) { // TODO Auto-generated catch block
e.printStackTrace();
} return null;
} //加密 Key一般是公钥public static String encrypt(Key key, String toBeEncryptedString){ try {
Cipher c = Cipher.getInstance(RSA_CONFIGURATION);
c.init(Cipher.ENCRYPT_MODE, key, new OAEPParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256,
PSource.PSpecified.DEFAULT)); byte[] encodedBytes;
encodedBytes = c.doFinal(toBeEncryptedString.getBytes("UTF-8")); return Base64.encode(encodedBytes);
} catch (IllegalBlockSizeException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeyException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch ( e) { // TODO Auto-generated catch block
e.printStackTrace();
} return null;
} //通过Pem格式的字符串(PKCS8)生成私钥,base64是去掉头和尾的b64编码的字符串
//Pem格式私钥一般有2种规范:PKCS8和PKCS1.注意java在生成私钥时的不同
static PrivateKey generatePrivateKeyFromPKCS8(String base64)
{ byte[] privateKeyBytes; try {
privateKeyBytes = Base64.decode(base64.getBytes("UTF-8"));
KeyFactory kf = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec ks = new PKCS8EncodedKeySpec(privateKeyBytes);
PrivateKey privateKey = kf.generatePrivate(ks); return privateKey;
} catch (Base64DecodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) { // TODO Auto-generated catch block
e.printStackTrace();
} return null;
} //通过Pem格式的字符串(PKCS1)生成私钥,base64是去掉头和尾的b64编码的字符串
static PrivateKey generatePrivateKeyFromPKCS1(String base64)
{ byte[] privateKeyBytes; try {
privateKeyBytes = Base64.decode(base64.getBytes("UTF-8"));
KeyFactory kf = KeyFactory.getInstance("RSA");
X509EncodedKeySpec ks = new X509EncodedKeySpec(privateKeyBytes);
PrivateKey privateKey = kf.generatePrivate(ks); return privateKey;
} catch (Base64DecodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) { // TODO Auto-generated catch block
e.printStackTrace();
} return null;
} //通过Pem格式的字符串(PKCS1)生成公钥,base64是去掉头和尾的b64编码的字符串
//Pem格式公钥一般采用PKCS1格式
static PublicKey generatePublicKeyFromPKCS1(String base64)
{ byte[] publicKeyBytes; try {
publicKeyBytes = Base64.decode(base64.getBytes("UTF-8"));
KeyFactory kf = KeyFactory.getInstance("RSA");
X509EncodedKeySpec ks = new X509EncodedKeySpec(publicKeyBytes);
PublicKey publicKey = kf.generatePublic(ks); return publicKey;
} catch (Base64DecodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) { // TODO Auto-generated catch block
e.printStackTrace();
} return null;
} //通过molus和exponent生成公钥
//参数含义就是RSA算法里的意思
public static RSAPublicKey getPublicKey(String molus, String exponent) {
try {
BigInteger b1 = new BigInteger(molus);
BigInteger b2 = new BigInteger(exponent);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKeySpec keySpec = new RSAPublicKeySpec(b1, b2);
return (RSAPublicKey) keyFactory.generatePublic(keySpec);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Python 代码
from Config import configfrom Crypto.Hash import SHA256from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEP
key = RSA.generate(1024)
pubkey = key.publickey().keydef Decrypt(prikey,data):
try:
cipher = PKCS1_OAEP.new(prikey, hashAlgo=SHA256) return cipher.decrypt(data) except:
traceback.print_exc() return Nonedef Encrypt(pubkey,data):
try:
cipher = PKCS1_OAEP.new(pubkey, hashAlgo=SHA256) return cipher.encrypt(data) except:
traceback.print_exc() return None
E. Python怎么实现对字符串的加密解密
from random import seed,randint str_in=input('请输入一个字符串:内') you_seed=input('请输入密容码:') you_seed=int(you_seed) #lock def my_lock(lock_str,lock_seed): seed(lock_seed) li_out=[] for i in lock_str: li_out.append(chr(ord(...
F. 求一个简单的python数字加密解密算法
用hash呗。
import hashlib
a = "a test string"
print hashlib.md5(a).hexdigest()
print hashlib.sha1(a).hexdigest()
print hashlib.sha224(a).hexdigest()
print hashlib.sha256(a).hexdigest()
print hashlib.sha384(a).hexdigest()
print hashlib.sha512(a).hexdigest()
针对str类型的。
加密的话,可以对最后得出的hash值再处理即可。比如回左移,右移,某答2位替换,某位加几等等即可。
解密直接用逆序就可以了。
G. 跪求大佬python DES加密(Crypto包)
python的des实现有pyDes这个库,不知道你是不是要这个,下载方式:
pipinstallpyDes
H. 求一个DES 算法 PHP python 通用 PHP进行加密 python解密
用hash呗。
import hashlib
a = "a test string"
print hashlib.md5(a).hexdigest()
print hashlib.sha1(a).hexdigest()
print hashlib.sha224(a).hexdigest()
print hashlib.sha256(a).hexdigest()
print hashlib.sha384(a).hexdigest()
print hashlib.sha512(a).hexdigest()
针对str类型的。
加密的话,可以对最后得出的hash值再处理即可。比如左移,右移,某2位替换,某位加几等等即可。
解密直接用逆序就可以了。
I. Python编程实现加密解密读取文件
对Python加密时可能会有两种形式,一种是对Python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。
1、对python转exe加壳
下载最新版VirboxProtector加壳工具,使用加壳工具直接对demo.exe进行加壳操作
2、对.py/.pyc加密
第一步,使用加壳工具对python安装目录下的python.exe进行加壳,将python.exe拖入到加壳工具VirboxProtector中,配置后直接点击加壳。
第二步,对.py/.pyc进行加密,使用DSProtector对.py/.pyc进行保护。
安全技术:
l虚拟机外壳:精锐5的外壳保护工具,创新性的引入了预分析和自动优化引擎,有效的解决了虚拟化保护代码时的安全性和性能平衡问题。
l碎片代码执行:利用自身成熟的外壳中的代码提取技术,抽取大量、大段代码,加密混淆后在安全环境中执行,最大程度上减少加密锁底层技术和功能的依赖,同时大量大段地移植又保证了更高的安全性。
lVirbox加密编译引擎:集编译、混淆等安全功能于一身,由于在编译阶段介入,可优化空间是普遍虚拟化技术无法比拟的,对代码、变量的混淆程度也有了根本的提升。
l反黑引擎:内置R0级核心态反黑引擎,基于黑客行为特征 的(反黑数据库)反制手段。精准打击调试、注入、内存修改等黑客行为,由被动挨打到主动防护。
加密效果:
加密之前
以pyinstall 的打包方式为例,使用pyinstxtractor.py文件对log_322.exe进行反编译,执行后会生成log_322.exe_extracted文件夹,文件夹内会生成pyc文件。
成功之后会在同目录下生成一个文件夹