python des加密文件_Python DES加密解密方法 pyDes库 兼容中文
单纯记录一下Python中DES加密解密的使用方式直接看代码:
依赖pyDes库安装> pip install pyDes
约定秘钥
python和java 加密和解密联调,兼容中文字符串
Python代码段
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# encoding:utf-8
# @Author : Benjamin
# @Time : 2020/7/15 15:47
# des模式 填充方式 ECB加密方式
from pyDes import des, PAD_PKCS5, ECB
# 秘钥 (如果和Java对接,两边要有相同的秘钥)
DES_KEY = "test*key*"
s = '哈哈'.encode() # 这里中文要转成字节, 英文好像不用
des_obj = des(DES_KEY, ECB, DES_KEY, padmode=PAD_PKCS5) # 初始化一个des对象,参数是秘钥,加密方式,偏移, 填充方式
# secret_bytes = des_obj.encrypt(s) # 用对象的encrypt方法加密
# s = des_obj.decrypt(secret_bytes) # 用对象的decrypt方法解密
# print(secret_bytes,s)
def encrypt(s):
s = s.encode() # 这里中文要转成字节
secret_bytes = des_obj.encrypt(s) # 用对象的encrypt方法加密
return secret_bytes.hex()
def decrypt(secret_bytes):
secret_bytes = bytes.fromhex(secret_bytes) # 这里中文要转成字节
s = des_obj.decrypt(secret_bytes) # 用对象的decrypt方法解密
return s.decode()
test = encrypt("123")
print(test)
print(decrypt(test))
Java代码对比
public class RDes {
/** 加密算法,可用 DES,DESede,Blowfish. */
private final static String ALGORITHM = "DES";
/**
* DES解密算法
*
* @param cryptKey 密钥 要是偶数
* @throws Exception
*/
public static String decrypt(String data, String cryptKey) throws Exception {
return new String(decrypt(hex2byte(data.getBytes()), cryptKey.getBytes()));
}
/**
* DES加密算法
*
* @throws Exception
*/
public final static String encrypt(String data, String cryptKey) throws Exception {
return byte2hex(encrypt(data.getBytes(), cryptKey.getBytes()));
}
private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂,然后用它把DESKeySpec转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance(ALGORITHM);
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
// 现在,获取数据并加密
// 正式执行加密操作
return cipher.doFinal(data);
}
private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance(ALGORITHM);
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
// 现在,获取数据并解密
// 正式执行解密操作
return cipher.doFinal(data);
}
private static byte[] hex2byte(byte[] b) {
if ((b.length % 2) != 0) throw new IllegalArgumentException("长度不是偶数");
byte[] b2 = new byte[b.length / 2];
for (int n = 0; n < b.length; n += 2) {
String item = new String(b, n, 2);
b2[n / 2] = (byte) Integer.parseInt(item, 16);
}
return b2;
}
private static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs.toUpperCase();
}
}
python des加密文件_Python DES加密解密方法 pyDes库 兼容中文相关推荐
- python des加密文件_python DES3 加密解密
背景:想给公司的进件流程写一套进件脚本,首先遇到的就是加密解密.公司用的 DES3 + base64 加密解密 一.安装 pycrypto模块,推荐用pycrypto编译文件,直接下载安装就行 ht ...
- python二进制写入文件_python读写二进制文件的方法
本文实例讲述了python读写二进制文件的方法.分享给大家供大家参考.具体如下: 初学python,现在要读一个二进制文件,查找doc只发现 file提供了一个read和write函数,而且读写的都是 ...
- python读取文件某一行-使用python读取.text文件特定行的数据方法
如何用python循环读取下面.txt文件中,用红括号标出来的数据呢? 首先,观察数据可知,不同行的第一个数据元素不一样,所以考虑直接用正则表达式. 再加上,对读和写文件的操作,就行了 注:我用的是p ...
- python读取文件多行内容-使用python读取.text文件特定行的数据方法
如何用python循环读取下面.txt文件中,用红括号标出来的数据呢? 首先,观察数据可知,不同行的第一个数据元素不一样,所以考虑直接用正则表达式. 再加上,对读和写文件的操作,就行了 注:我用的是p ...
- python读取文件第n行-Python实现读取文件最后n行的方法
本文实例讲述了Python实现读取文件最后n行的方法.分享给大家供大家参考,具体如下: # -*- coding:utf8-*- import os import time import dateti ...
- python保存代码需要删除头部信息吗_用python删除java文件头上版权信息的方法
在使用他人代码时,为不保留文件头部版权信息,需要一个个删掉,费时费力, 写了个脚本,简单清除掉目录下所有的文件的头部版权信息.# -*- coding: utf8 -*- ''''' 删除java文件 ...
- python读txt文件时末尾许多空格-python读取txt文件时去掉空格的方法
python读取txt文件时去掉空格的方法 发布时间:2020-09-22 14:15:44 来源:亿速云 阅读:85 作者:小新 这篇文章给大家分享的是有关python读取txt文件时去掉空格的方法 ...
- python生成exe文件运行闪退解决方法
** python生成exe文件运行闪退解决方法: ** 使用pyinstaller生成.exe文件: pyinstaller -F filename.py 用python写了一个程序,在python ...
- python的pyd文件_Python 加密之 生成pyd文件
混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Python有py.pyc.pyw.pyo.pyd等文件格式. 其中,pyc是二进制文件.但很容易被反编译. pyw也不行,只是隐藏 ...
最新文章
- linux哪些文件被更新,Linux:如何確定文件是否已被其他進程更新?
- 实现JDK没有提供的AtomicFloat
- 个人图书管理系统c语言代码,c语言源代码---------------个人图书管理系统
- Cpp 对象模型探索 / new 对象时加括号和不加括号时的差别
- JDBC链接SQLServer2005 Express
- 【C语言】数据结构C语言版 实验4 栈与字符串
- Eclipse中设置自定义文档签名
- VS2005 + VSS2005 的方法
- 实对称矩阵的特征向量矩阵为酉矩阵
- Smail语法(1)
- spring retry, guava retrying 的整合-sisyphus java 重试
- 如何用ID批量排版图片
- 删除的vue怎么找回_vue详情 恢复 删除
- 霍夫直线检测原理详解
- 阿拉伯数字转换成大写的数字
- Android一键清理原理
- RuntimeError: Sizes of tensors must match except in dimension 2. Got 5 and 4
- 巡逻机器人(BFS)
- 网站网页中加入各种分享按钮功能 百度分享
- ubuntu/linux命令记录 长期更新
热门文章
- lambda表达式封装对数据库的查询
- Linq to SQL 语法记录....并发写事务
- Tips--创建jupyter notebook的虚拟环境
- 查找链表中倒数第k个结点(C++)
- 基于顺序存储结构的图书信息表的最贵图书的查找(C++)
- php 响应时间,PHP下解决ajax请求服务器响应时间过长问题
- 华为鸿蒙系统自动驾驶,华为高阶自动驾驶 + 华为鸿蒙 OS 车机系统体验
- 从0开始做Windows Phone 7开发
- spring boot定时任务解析
- 天使玩偶/SJY摆棋子