python实现DES加密解密方法实例详解

本文实例讲述了python实现DES加密解密方法。分享给大家供大家参考。具体分析如下:

实现功能:加密中文等字符串
密钥与明文可以不等长
这里只贴代码,加密过程可以自己百度,此处python代码没有优化

1. desstruct.py DES加密中要使用的结构体

ip= (58, 50, 42, 34, 26, 18, 10, 2,
   60, 52, 44, 36, 28, 20, 12, 4,
   62, 54, 46, 38, 30, 22, 14, 6,
   64, 56, 48, 40, 32, 24, 16, 8,
   57, 49, 41, 33, 25, 17, 9 , 1,
   59, 51, 43, 35, 27, 19, 11, 3,
   61, 53, 45, 37, 29, 21, 13, 5,
   63, 55, 47, 39, 31, 23, 15, 7)
ip_1=(40, 8, 48, 16, 56, 24, 64, 32,
   39, 7, 47, 15, 55, 23, 63, 31,
   38, 6, 46, 14, 54, 22, 62, 30,
   37, 5, 45, 13, 53, 21, 61, 29,
   36, 4, 44, 12, 52, 20, 60, 28,
   35, 3, 43, 11, 51, 19, 59, 27,
   34, 2, 42, 10, 50, 18, 58, 26,
   33, 1, 41, 9, 49, 17, 57, 25)
e =(32, 1, 2, 3, 4, 5, 4, 5,
    6, 7, 8, 9, 8, 9, 10, 11,
   12,13, 12, 13, 14, 15, 16, 17,
   16,17, 18, 19, 20, 21, 20, 21,
   22, 23, 24, 25,24, 25, 26, 27,
   28, 29,28, 29, 30, 31, 32, 1)
p=(16, 7, 20, 21, 29, 12, 28, 17,
   1, 15, 23, 26, 5, 18, 31, 10,
   2, 8, 24, 14, 32, 27, 3, 9,
   19, 13, 30, 6, 22, 11, 4, 25)
s=[ [[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7],
   [0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8],
   [4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0],
   [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]],
   [[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10],
   [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5],
   [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15],
   [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9]],
   [[10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8],
   [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1],
   [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7],
   [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]],
  [[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15],
   [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14,9],
   [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4],
   [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]],
  [[2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9],
   [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6],
   [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14],
   [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3]],
  [[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11],
   [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8],
   [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6],
   [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]],
  [[4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1],
   [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6],
   [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2],
   [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]],
  [[13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7],
   [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2],
   [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8],
   [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]]]
pc1=(57, 49, 41, 33, 25, 17, 9,
    1, 58, 50, 42, 34, 26, 18,
   10, 2, 59, 51, 43, 35, 27,
   19, 11, 3, 60, 52, 44, 36,
   63, 55, 47, 39, 31, 33, 15,
    7, 62, 54, 46, 38, 30, 22,
   14, 6, 61, 53, 45, 37, 29,
   21, 13, 5, 28, 20, 12, 4);
pc2= (14, 17, 11, 24, 1, 5, 3, 28,
   15, 6, 21, 10, 23, 19, 12, 4,
   26, 8, 16, 7, 27, 20, 13, 2,
   41, 52, 31, 37, 47, 55, 30, 40,
   51, 45, 33, 48, 44, 49, 39, 56,
   34, 53, 46, 42, 50, 36, 29, 32)
d = ( 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1)

2. des.py 加密文件

#_*_ coding:utf-8 _*_
#!/usr/bin/env python
#Filename:des.py
from desstruct import *
import re
__all__=['desencode']
class DES():
  '''des 加密'''
  def __init__(self):
    pass
  #加密
  def code(self,from_code,key,code_len,key_len):
    output=""
    trun_len=0
    #将密文和密钥转换为二进制
    code_string=self._functionCharToA(from_code,code_len)
    code_key=self._functionCharToA(key,key_len)
    #如果密钥长度不是16的整数倍则以增加0的方式变为16的整数倍
    if code_len%16!=0:
      real_len=(code_len/16)*16+16
    else:
      real_len=code_len
    if key_len%16!=0:
      key_len=(key_len/16)*16+16
    key_len*=4
    #每个16进制占4位
    trun_len=4*real_len
    #对每64位进行一次加密
    for i in range(0,trun_len,64):
      run_code=code_string[i:i+64]
      l=i%key_len
      run_key=code_key[l:l+64]
      #64位明文、密钥初始置换
      run_code= self._codefirstchange(run_code)
      run_key= self._keyfirstchange(run_key)
      #16次迭代
      for j in range(16):
        #取出明文左右32位
        code_r=run_code[32:64]
        code_l=run_code[0:32]
        #64左右交换
        run_code=code_r
        #右边32位扩展置换
        code_r= self._functionE(code_r)
        #获取本轮子密钥
        key_l=run_key[0:28]
        key_r=run_key[28:56]
        key_l=key_l[d[j]:28]+key_l[0:d[j]]
        key_r=key_r[d[j]:28]+key_r[0:d[j]]
        run_key=key_l+key_r
        key_y= self._functionKeySecondChange(run_key)
        #异或
        code_r= self._codeyihuo(code_r,key_y)
        #S盒代替/选择
        code_r= self._functionS(code_r)
        #P转换
        code_r= self._functionP(code_r)
        #异或
        code_r= self._codeyihuo(code_l,code_r)
        run_code+=code_r
      #32互换
      code_r=run_code[32:64]
      code_l=run_code[0:32]
      run_code=code_r+code_l
      #将二进制转换为16进制、逆初始置换
      output+=self._functionCodeChange(run_code)
    return output
  #异或
  def _codeyihuo(self,code,key):
    code_len=len(key)
    return_list=''
    for i in range(code_len):
      if code[i]==key[i]:
        return_list+='0'
      else:
        return_list+='1'
    return return_list
  #密文或明文初始置换
  def _codefirstchange(self,code):
    changed_code=''
    for i in range(64):
      changed_code+=code[ip[i]-1]
    return changed_code
  #密钥初始置换
  def _keyfirstchange (self,key):
    changed_key=''
    for i in range(56):
      changed_key+=key[pc1[i]-1]
    return changed_key
  #逆初始置换
  def _functionCodeChange(self, code):
    lens=len(code)/4
    return_list=''
    for i in range(lens):
      list=''
      for j in range(4):
        list+=code[ip_1[i*4+j]-1]
      return_list+="%x" %int(list,2)
    return return_list
  #扩展置换
  def _functionE(self,code):
    return_list=''
    for i in range(48):
      return_list+=code[e[i]-1]
    return return_list
  #置换P
  def _functionP(self,code):
    return_list=''
    for i in range(32):
      return_list+=code[p[i]-1]
    return return_list
  #S盒代替选择置换
  def _functionS(self, key):
    return_list=''
    for i in range(8):
      row=int( str(key[i*6])+str(key[i*6+5]),2)
      raw=int(str( key[i*6+1])+str(key[i*6+2])+str(key[i*6+3])+str(key[i*6+4]),2)
      return_list+=self._functionTos(s[i][row][raw],4)
    return return_list
  #密钥置换选择2
  def _functionKeySecondChange(self,key):
    return_list=''
    for i in range(48):
      return_list+=key[pc2[i]-1]
    return return_list
  #将十六进制转换为二进制字符串
  def _functionCharToA(self,code,lens):
    return_code=''
    lens=lens%16
    for key in code:
      code_ord=int(key,16)
      return_code+=self._functionTos(code_ord,4)
    if lens!=0:
      return_code+='0'*(16-lens)*4
    return return_code
  #二进制转换
  def _functionTos(self,o,lens):
    return_code=''
    for i in range(lens):
      return_code=str(o>>i &1)+return_code
    return return_code
#将unicode字符转换为16进制
def tohex(string):
  return_string=''
  for i in string:
    return_string+="%02x"%ord(i)
  return return_string
def tounicode(string):
  return_string=''
  string_len=len(string)
  for i in range(0,string_len,2):
    return_string+=chr(int(string[i:i+2],16))
  return return_string
#入口函数
def desencode(from_code,key):
  #转换为16进制
  from_code=tohex(from_code)
  key=tohex(key)
  des=DES()
  key_len=len(key)
  string_len=len(from_code)
  if string_len<1 or key_len<1:
    print 'error input'
    return False
  key_code= des.code(from_code,key,string_len,key_len)
  return key_code
#测试
if __name__ == '__main__':
  print desencode('我是12345678刘就是我abcdwfd','0f1571c947刘')
#返回密文为: 84148584371a6a1fe99e1da0ce1e34649b88ed15098e8aa4b8eb0bf24885c658

3. 解密文件

#_*_coding:utf-8_*_
#!/usr/bin/env python
#Filename:des.py
from desstruct import *
import re
__all__=['desdecode']
class DES():
  '''解密函数,DES加密与解密的方法相差不大
    只是在解密的时候所用的子密钥与加密的子密钥相反
  '''
  def __init__(self):
    pass
  def decode(self,string,key,key_len,string_len):
    output=""
    trun_len=0
    num=0
    #将密文转换为二进制
    code_string=self._functionCharToA(string,string_len)
    #获取字密钥
    code_key=self._getkey(key,key_len)
    #如果密钥长度不是16的整数倍则以增加0的方式变为16的整数倍
    real_len=(key_len/16)+1 if key_len%16!=0 else key_len/16
    trun_len=string_len*4
    #对每64位进行一次加密
    for i in range(0,trun_len,64):
      run_code=code_string[i:i+64]
      run_key=code_key[num%real_len]
      #64位明文初始置换
      run_code= self._codefirstchange(run_code)
      #16次迭代
      for j in range(16):
        code_r=run_code[32:64]
        code_l=run_code[0:32]
        #64左右交换
        run_code=code_r
        #右边32位扩展置换
        code_r= self._functionE(code_r)
        #获取本轮子密钥
        key_y=run_key[15-j]
        #异或
        code_r= self._codeyihuo(code_r,key_y)
        #S盒代替/选择
        code_r= self._functionS(code_r)
        #P转换
        code_r= self._functionP(code_r)
        #异或
        code_r= self._codeyihuo(code_l,code_r)
        run_code+=code_r
      num+=1
      #32互换
      code_r=run_code[32:64]
      code_l=run_code[0:32]
      run_code=code_r+code_l
      #将二进制转换为16进制、逆初始置换
      output+=self._functionCodeChange(run_code)
    return output
  #获取子密钥
  def _getkey(self,key,key_len):
    #将密钥转换为二进制
    code_key=self._functionCharToA(key,key_len)
    a=['']*16
    real_len=(key_len/16)*16+16 if key_len%16!=0 else key_len
    b=['']*(real_len/16)
    for i in range(real_len/16):
      b[i]=a[:]
    num=0
    trun_len=4*key_len
    for i in range(0,trun_len,64):
      run_key=code_key[i:i+64]
      run_key= self._keyfirstchange(run_key)
      for j in range(16):
        key_l=run_key[0:28]
        key_r=run_key[28:56]
        key_l=key_l[d[j]:28]+key_l[0:d[j]]
        key_r=key_r[d[j]:28]+key_r[0:d[j]]
        run_key=key_l+key_r
        key_y= self._functionKeySecondChange(run_key)
        b[num][j]=key_y[:]
      num+=1
    return b
  #异或
  def _codeyihuo(self,code,key):
    code_len=len(key)
    return_list=''
    for i in range(code_len):
      if code[i]==key[i]:
        return_list+='0'
      else:
        return_list+='1'
    return return_list
  #密文或明文初始置换
  def _codefirstchange(self,code):
    changed_code=''
    for i in range(64):
      changed_code+=code[ip[i]-1]
    return changed_code
  #密钥初始置换
  def _keyfirstchange (self,key):
    changed_key=''
    for i in range(56):
      changed_key+=key[pc1[i]-1]
    return changed_key
  #逆初始置换
  def _functionCodeChange(self, code):
    return_list=''
    for i in range(16):
      list=''
      for j in range(4):
        list+=code[ip_1[i*4+j]-1]
      return_list+="%x" %int(list,2)
    return return_list
  #扩展置换
  def _functionE(self,code):
    return_list=''
    for i in range(48):
      return_list+=code[e[i]-1]
    return return_list
  #置换P
  def _functionP(self,code):
    return_list=''
    for i in range(32):
      return_list+=code[p[i]-1]
    return return_list
  #S盒代替选择置换
  def _functionS(self, key):
    return_list=''
    for i in range(8):
      row=int( str(key[i*6])+str(key[i*6+5]),2)
      raw=int(str( key[i*6+1])+str(key[i*6+2])+str(key[i*6+3])+str(key[i*6+4]),2)
      return_list+=self._functionTos(s[i][row][raw],4)
    return return_list
  #密钥置换选择2
  def _functionKeySecondChange(self,key):
    return_list=''
    for i in range(48):
      return_list+=key[pc2[i]-1]
    return return_list
  #将十六进制转换为二进制字符串
  def _functionCharToA(self,code,lens):
    return_code=''
    lens=lens%16
    for key in code:
      code_ord=int(key,16)
      return_code+=self._functionTos(code_ord,4)
    if lens!=0:
      return_code+='0'*(16-lens)*4
    return return_code
  #二进制转换
  def _functionTos(self,o,lens):
    return_code=''
    for i in range(lens):
      return_code=str(o>>i &1)+return_code
    return return_code
#将unicode字符转换为16进制
def tohex(string):
  return_string=''
  for i in string:
    return_string+="%02x"%ord(i)
  return return_string
def tounicode(string):
  return_string=''
  string_len=len(string)
  for i in range(0,string_len,2):
    return_string+=chr(int(string[i:i+2],16))
  return return_string
#入口函数
def desdecode(from_code,key):
  key=tohex(key)
  des=DES()
  key_len=len(key)
  string_len=len(from_code)
  if string_len%16!=0:
    return False
  if string_len<1 or key_len<1:
    return False
  key_code= des.decode(from_code,key,key_len,string_len)
  return tounicode(key_code)
#测试
if __name__ == '__main__':
  print desdecode('84148584371a6a1fe99e1da0ce1e34649b88ed15098e8aa4b8eb0bf24885c658','0f1571c947刘'

解密后为: 我是12345678刘就是我abcdwfd

希望本文所述对大家的Python程序设计有所帮助。

时间: 2015-06-29

python基于pyDes库实现des加密的方法

本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBC和ECB两种加密方式. 1.Windows下安装 下载后pyDes-x.x.x.zip并解压后,里面有setup.py文件,使用命令 setup.py --help可查看详细使用. 你可以使用命令python setup.

Python使用Pycrypto库进行RSA加密的方法详解

密码与通信 密码技术是一门历史悠久的技术.信息传播离不开加密与解密.密码技术的用途主要源于两个方面,加密/解密和签名/验签 在信息传播中,通常有发送者,接受者和窃听者三个角色.假设发送者Master想要写信给接受者Ghost,可是又不想信的内容被别人看到,因此Master需要先对信加密,而Ghost收到信之后又能解密.这样别的人即使窃听盗取了密文也无法解密.其次,如果窃听者并不像破译内容,而是伪造Master发消息给Ghost,那么Master发消息前就得先对机密内容进行签名. 密码技术 为了进

python实现的AES双向对称加密解密与用法分析

本文实例讲述了python实现的AES双向对称加密解密与用法.分享给大家供大家参考,具体如下: 高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级

在Python中使用M2Crypto模块实现AES加密的教程

AES(英文:Advanced Encryption Standard,中文:高级加密标准),是一种区块加密标准.AES将原始数据分成多个4×4字节矩阵来处理,通过预先定义的密钥对每个字节矩阵中的每个字节进行异或.替换.移位以及线性变换操作来达到加密的目的.密钥长度可以是128,192或256比特.     下面是一个利用Python M2Crypto库,并使用aes_128_ecb算法进行加密和解密的例子.首先介绍一下几个关键的点: 1.iv(Initialization vector),即初

Python实现对字符串的加密解密方法示例

本文实例讲述了Python实现对字符串的加密解密方法.分享给大家供大家参考,具体如下: 需求是是要将密码存在数据库里,所以要加密解密是可逆的,在数据库里不要有特殊字符,防止数据库备份和恢复中出错. 安装PyCrypto,可以用AES和DES.我使用DES加解密.加密后将密文转为16进制,在入库.测试代码如下. ; html-script: false ]#!/bin/python #-*- coding:utf-8 -*- # Filename: # Revision: # Date: 2013

python实现无证书加密解密实例

本文实例讲述了python实现无证书加密解密的方法,分享给大家供大家参考.具体实现方法如下: 无证书加密就是双方不需要维护证书,加密与解密只需要双方约定一个key就可以,无证书加解密的方式应用更广泛一些,python官方也有这方面的相关例子说明,地址是:https://pypi.python.org/pypi/pycrypto,主要用的是from Crypto.Cipher import AES这个模块,代码如下: 复制代码 代码如下: ''' /** * AES加密字符串 * * @param

Python基于DES算法加密解密实例

本文实例讲述了Python基于DES算法加密解密实现方法.分享给大家供大家参考.具体实现方法如下: #coding=utf-8 from functools import partial import base64 class DES(object): """ DES加密算法 interface: input_key(s, base=10), encode(s), decode(s) """ __ip = [ 58,50,42,34,26,18,

python字符串加密解密的三种方法分享(base64 win32com)

1. 最简单的方法是用base64: 复制代码 代码如下: import base64 s1 = base64.encodestring('hello world')s2 = base64.decodestring(s1)print s1,s2 # aGVsbG8gd29ybGQ=\n# hello world Note: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文 2. 第二种方法是使用win32com.client 复制代码 代码如下: import

python rsa 加密解密

最近有需求,需要研究一下RSA加密解密安全:在网上百度了一下例子文章,很少有文章介绍怎么保存.传输.打印加密后的文本信息,都是千篇一律的.直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密.仔细想了一下RSA加密解密的过程,确定有二端,一端为:加密端,一端为解密端,一般不在同一台机器.在这里,我只模拟了保存在文件,然后再读出来:关于怎以通过网络传输,也是大同小异. 用RSA加密后的密文,是无法直接用文本显示,因为存在一些无法用文本信息编码显示的二进制数据.对于保存,网络传输,打印不乱码,

python有证书的加密解密实现方法

本文实例讲述了python有证书的加密解密实现方法.分享给大家供大家参考.具体实现方法如下: 最近在做python的加解密工作,同时加完密的串能在php上能解出来,网上也找了一些靠谱的资料,刚好也有时间我就总结了一下python在加密与解密这块的代码,今后可能还能用的上.相对于php而言python这块加解密组件较多的,分别是: python-crypto - 这个组件是基本组件,使用的函式相对比较复杂. ezPyCrypto - 相对简单,但他作出来的公私钥无法与其他程序相兼容     SSL

python中base64加密解密方法实例分析

本文实例讲述了python中base64加密解密方法.分享给大家供大家参考.具体分析如下: 一.base64 Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符.三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示.它可用来作为电子邮件的传输编码.在Base64中的可打印字符包括字母A-Z.a-z.数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同.编码后的

Python制作钉钉加密/解密工具

又是很久没有写技术博客了,盖因最近都在学习知识,也没有总结出什么值得分享的内容,所以一直停笔至今.最近的工作和钉钉的开发打上了交到,官方并没有提供任何Python的SDK,于是只能全部自己写.现在我将其中实现起来相对费时间的"加密/解密/签名"部分分享出来,希望能帮助到一些人. 加密/解密的具体机制,可以参考 官方文档 . 在你的项目中安装这个扩展,可以使用: pip install dingtalk_crypto 安装. 使用方法,可以参考下面的测试代码: # -*- coding:

Java实现的3des加密解密工具类示例

本文实例讲述了Java实现的3des加密解密工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.poifs.property.Child; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax

Java实现的DES加密解密工具类实例

本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; imp

Java加密解密工具(适用于JavaSE/JavaEE/Android)

本文实例为大家分享了一个适用于JavaSE/JavaEE/Android的Java加密解密工具,供大家学习,具体内容如下 package longshu.utils.security; import java.lang.reflect.Method; import java.security.InvalidKeyException; import java.security.Key; import java.security.MessageDigest; import java.security

使用Python制作一个打字训练小工具

一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码. 然而现实中的程序员呢?对于很多程序员来说,没有百度和 Google 解决不了的问题,也没有 ctrl + c 和 ctrl + v 实现不了的功能. 那么身为一个程序员,要怎么让自己看起来更加"专业"呢?答案就是加快自己的打字速度了,敲的代码可能是错的,但这个13却是必须装的! 然而还

C# 数据库链接字符串加密解密工具代码详解

有些项目尤其是WinForm或者是WPF项目,针对一些工具形式的小项目,不想软件流出去之后,懂程序的的拿到手之后一看配置文件就知道了我们数据库的用户名和密码,如果外网能访问的话,那就麻烦大了.所以这里为了防止项目外泄之后这些信息不被别人看到,我们就需要对链接字符串或者其他重要信息进行加密,用的时候在解密. 思路:使用两个数对连接字符串进行加密,再用这两个数进行解密. <add key="ConfigString" value="4HsXBRNXTkeN0ZoKdEwFE

如何基于Python制作有道翻译小工具

这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使用tkinter来制作一个建议的GUI 期间遇到的一个问题则是如何刷新翻译的结果,否则的话会在text里一直累加翻译结果. 于是,在mainlo