技术标签: Python DES加密 Python
注意点
一、秘钥必须是8位
二、待加密的明文长度必须是8的倍数,不足则补空字符
from Crypto.Cipher import DES
import base64
def encrypt_des(cipher):
if cipher is None:
return ""
try:
key = '1234A#CD'
# ECB方式
generator = DES.new(key, DES.MODE_ECB)
# 非8整数倍明文补位
pad = 8 - len(cipher) % 8
pad_str = ""
for i in range(pad):
pad_str = pad_str + chr(pad)
# 加密
encrypted = generator.encrypt(cipher + pad_str)
# 编码得密文
result = base64.b64encode(encrypted)
print "cipher : "+str(cipher)+" encrypted : "+result
return result
except Exception, e:
print Exception, ":", e
return ""
测试
print encrypt_des("1234567890")
输出
cipher : 1234567890 encrypted : jHgeV9zr6EVnSM7n7LG63g==
def decrypt_des(encrypted):
if encrypted is None:
return ""
try:
key = '1234A#CD'
# ECB方式
generator = DES.new(key, DES.MODE_ECB)
# 解码
crypted_str = base64.b64decode(encrypted)
# 解密
result = generator.decrypt(crypted_str)
# 替换非空格字符(诡异的串)
result = result.strip("�����")
result = result.strip("������")
print "encrypted : "+str(encrypted)+" cipher :"+result
return result
except Exception, e:
print Exception, ":", e
return ""
测试
print decrypt_des("jHgeV9zr6EVnSM7n7LG63g==")
输出
encrypted : jHgeV9zr6EVnSM7n7LG63g== cipher :1234567890
为什么要说第二种,因为我在本地Python2.7通过pip安装Crypto始终安装不上. 遇到和我同样问题的朋友可以用该方式解决DES加解密
pip install pyDes
from pyDes import des, ECB, PAD_PKCS5
import base64
def des_encrypt(s):
secret_key = '1234A#CD'
iv = secret_key
k = des(secret_key, ECB, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s.encode('utf-8'), padmode=PAD_PKCS5)
return str(base64.b64encode(en), 'utf-8')
def des_descrypt(s):
secret_key = '1234A#CD'
iv = secret_key
k = des(secret_key, ECB, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(base64.b64decode(s), padmode=PAD_PKCS5)
return de
文章浏览阅读8.7k次,点赞9次,收藏57次。问题描述:裁剪操作或其他一些操作后影响会出现NoData区域,在制图时不好看。如下图红色区域为NoData区域,更改Arcgis显示设置无效A:方法是ArcTools->Spatial Analyst Tools->Map Algebra->Single Output Map Algebra(就是栅格计算器).算法表达式为: Con(IsNull([raster]),0,[raster])。注意大小写其中[raster]是输入栅格名称。这个表达式的效果是将图像中N._arcmap栅格数据导png时nodata变黑边
文章浏览阅读7.9k次,点赞25次,收藏106次。1.关于native关键字想必读者已经了解过native关键字了。这里笔者就大致囊括一下,被native关键字修饰的方法叫做本地方法,本地方法和其它方法不一样,本地方法意味着和平台有关,因此使用了native的程序可移植性都不太高。另外native方法在JVM中运行时数据区也和其它方法不一样,它有专门的本地方法栈。native方法主要用于加载文件和动态链接库,由于Java语言无法访问操作系统底层信息(比如:底层硬件设备等),这时候就需要借助C语言来完成了。被native修饰的方法可以被C语言重写。2.使_native修饰方法
文章浏览阅读1.3w次,点赞7次,收藏60次。 1 start方法 start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。 2 run方法 run()方法是不需要用户来调用的,当通过start方法启动一个线程之后,当线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意,继承Thread类必须重写run方法,在run方法中定义具体要..._thread类
文章浏览阅读377次。安装ora2pg条件1、perl版本5.10以上2、安装DBD::Oracle3、安装DBI4、安装DBD::Pg一、安装相关软件支持1、安装DBI#下载https://metacpan.org/release/DBI上传到服务器并解压出来DBI-1.637.tar.gz[ root@bigdata01 ~]$ lltotal 592-rw-r--r-- 1 gpadmin gpadmin 596..._ora2pg greenplum
文章浏览阅读370次。UVA 1411题意:有n个白点和n个黑点,要求用n条不相交的线段把他们连接起来,其中每条线段恰好连接一个白点和一个黑点。思路:连接两点a1和b1,如果还有其他的线段a2,b2相连与之相交,必有dist(a1,b1)+dist(a2,b2)大于dist(a1,b2)+dist(a2,b1),原因是两条相交线段构成了几个三角形,三角形性质有两边之和必大于第三边,所以,如果每条线段都没有与之相..._给定一个二分图,该二分图有 nn 个黑点与 nn 个白点
文章浏览阅读1k次。使用自己的数据训练网络时,需要用到两个函数:tf.train.slice_input_producer、tf.train.batch和两个类tf.train.Coordinator和tf.QueueRunner。参考博客:tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数和tensorflow中协调器 tf.train.Co..._tensorflow 实现简单的批处理训练例子
文章浏览阅读1.2w次,点赞14次,收藏113次。login.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>_javaweb数据库数据显示在表单
文章浏览阅读2.5k次。账户异常检测_异常登录数据集
文章浏览阅读3.2k次,点赞2次,收藏4次。花了几天的时间,查找了很多资料,基本上没有找到能够编译成功教程特留下此篇博客已做参考:windows编译libtorrent需要依赖于OpenSSL库,和boost库,建议直接下载一. 编译OpenSSL的库 编译OpenSSL网上教程一大堆,自己去找,我这里不介绍 编译好的OpenSSL库下载地址二. 编译boost库 参考地址:https..._windows libtorrent怎么用
文章浏览阅读3.2k次,点赞26次,收藏16次。现在的节点中有四个数据,再插入一个22之后,按照从小到大的顺序,22会放在50的前面,这样一来节点中就有5个key了,违背了5阶的概念,此时就会取中间元素,向上分裂,中间元素也就是中间数,60就是中间元素,60就向上分裂,形成一个新的节点,剩下的4个key也会分裂成两个子节点。插入22这个数据,观察效果,就如刚刚说的,第五个key进入节点后,不满足5阶的概念,中间元素向上分裂,60是中间元素,直接向上分裂,形成一个新的节点,其余的4个key成为新节点中的子节点。_- mysql数据库中的b+树,b-树结构
文章浏览阅读422次。了解RPA:www.i-search.com.cn学习RPAhttps://support.i-search.com.cn/下载RPA:https://www.i-search.com.cn/?from=csdn众所周知,在某些特殊情况下,有些人会使用各种奇奇怪怪的符号来表示数字。例如有些人写自己的 QQ 号,是这样写的:加暁眉扣:玖壹五捌⑦二Ⅲ9再不久前我是这样创建一个字典并写一个转换方法来对其进行处理:{‘一’: 1,‘壹’: 1, ‘①’: 1,‘二’: 2, ‘三’: 3, …}_影刀rpa处理特殊字符串
文章浏览阅读1k次。首先使用axios发送一个GET请求,并将其响应类型设置为“stream”。这将使axios返回一个包含可读流的响应对象。我们然后创建一个可写流,并将响应数据流(pipe)到可写流中。最后,我们返回一个Promise,以便在下载完成时进行通知。当Promise被resolve时,文件将下载到本地磁盘,并且可以使用相应的路径访问。如果下载过程中发生错误,Promise将被reject,并且在控制台上将打印出错误消息。_elementui下载文件到本地