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文件。
成功之後會在同目錄下生成一個文件夾