日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

pyDes 实现 Python 版的 DES 对称加密/解密--转

發(fā)布時間:2025/4/5 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyDes 实现 Python 版的 DES 对称加密/解密--转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://my.oschina.net/leejun2005/blog/586451

手頭有個 Java 版的 DES 加密/解密程序,最近想著將其 Python 重構(gòu)下,方便后續(xù)腳本解析,搗鼓了兩下 pyDes 貌似很方便,不過據(jù)網(wǎng)上其他同學(xué)測試說?PyCrypto 性能要比 pyDes 高一個數(shù)量級,這里我沒有做具體性能測試,也沒有選用 PyCrypto?主要原因有三:

(1)PyCrypto 在 windows 下依賴 VC++9.0,安裝麻煩?

(2)PyCrypto 默認(rèn)不支持?padmode,且對秘鑰以及偏轉(zhuǎn)向量長度有嚴(yán)格要求,擴(kuò)展性很差

(3)不是用來搞暴力破解,性能要求不高,所以就不關(guān)注性能了,能用就行 ?^ _ ^

下面直接上代碼吧~

1、Java 版

public class EncryptHelper {private static String strKey = "test_KEY", strParam = "test__IV";public static String desEncrypt(String source) throws Exception {if (source == null || source.length() == 0)return null;Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes("UTF-8"));SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey secretKey = keyFactory.generateSecret(desKeySpec);IvParameterSpec iv = new IvParameterSpec(strParam.getBytes("UTF-8"));cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);return StringHelper.toHexString(cipher.doFinal(source.getBytes("UTF-8"))).toUpperCase();}public static String desDecrypt(String source) throws Exception {if (source == null || source.length() == 0)return null;byte[] src = StringHelper.fromHexString(source);Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes("UTF-8"));SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey secretKey = keyFactory.generateSecret(desKeySpec);IvParameterSpec iv = new IvParameterSpec(strParam.getBytes("UTF-8"));cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);byte[] retByte = cipher.doFinal(src);return new String(retByte);}public static void main(String[] args) throws Exception {System.out.println(EncryptHelper.desDecrypt("886f930f65f29132f6ace2683c448b5580d681a1fec3fc91cf3161f074b53b935d1c8fe80f99201077b36f923a42ac0e05cabe579308fda08d8ff463ad334677"));System.out.println(EncryptHelper.desEncrypt("https://mail.google.com/mail/u/0/#inbox/a1ed0e2f6f28e06b4361"));} }//結(jié)果: //https://mail.google.com/mail/u/0/#inbox/a1ed0e2f6f28e06b4361 //886F930F65F29132F6ACE2683C448B5580D681A1FEC3FC91CF3161F074B53B935D1C8FE80F99201077B36F923A42AC0E05CABE579308FDA08D8FF463AD334677 2、Python 版 # -*- coding:utf-8 -*- import sysreload(sys) sys.setdefaultencoding('utf-8') from pyDes import * from binascii import b2a_hex, a2b_hex# For Python3, you'll need to use bytes, i.e.: # data = b"Please encrypt my data" # k = des(b"DESCRYPT", CBC, b"\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)data = 'https://mail.google.com/mail/u/0/#inbox/a1ed0e2f6f28e06b4361' KEY = "test_KEY" #密鑰 IV = "test__IV" #偏轉(zhuǎn)向量 # 使用DES對稱加密算法的CBC模式加密 k = des(KEY, CBC, IV, pad=None, padmode=PAD_PKCS5) d = k.encrypt(data) print b2a_hex(d) print "Decrypted: %r" % k.decrypt(d)#結(jié)果: #886f930f65f29132f6ace2683c448b5580d681a1fec3fc91cf3161f074b53b935d1c8fe80f99201077b36f923a42ac0e05cabe579308fda08d8ff463ad334677 #Decrypted: ' #或者單行命令如下: python -c 'from pyDes import *;from binascii import a2b_hex;import sys;print des("test_KEY", CBC, "test__IV", pad=None, padmode=PAD_PKCS5).decrypt(a2b_hex(sys.stdin.readlines()[0].strip()))' <<<886f930f65f29132f6ace2683c448b5580d681a1fec3fc91cf3161f074b53b935d1c8fe80f99201077b36f923a42ac0e05cabe579308fda08d8ff463ad334677 #https://mail.google.com/mail/u/0/#inbox/a1ed0e2f6f28e06b4361

?

3、Refer

[1]?pyDes庫 實(shí)現(xiàn)python的des加密

http://www.cnblogs.com/SunboyL/p/pyDes.html

[2]?Cryptography and Python

http://lenciel.cn/2013/07/cryptography-and-python/

[3]?加密解密工具類 EncryptUtil

http://uule.iteye.com/blog/1925046

[4]?implementing DES-X (mode CBC) using PyCrypto

https://gist.github.com/doublereedkurt/3921909

[5]?python 對字符串的加密解密

http://www.simonzhang.net/?p=1903

[6]?數(shù)據(jù)加密算法

http://baike.baidu.com/view/878529.htm

[7]?非對稱加密算法

http://baike.baidu.com/view/1490349.htm

[8]?Pycrypto與RSA密碼技術(shù)筆記

http://python.jobbole.com/84094/

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/8964016.html

總結(jié)

以上是生活随笔為你收集整理的pyDes 实现 Python 版的 DES 对称加密/解密--转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。