精华内容
下载资源
问答
  • PYTHON加密解密字符串

    千次阅读 2018-11-27 17:24:00
    依赖包安装部分 ...在你的python环境中的下图红框路径中找到 crypto 将其改成 Crypto 代码部分 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-11-27 17:21:23 # @Author : She...

    依赖包安装部分

    • 安装依赖包: pip install pycryptodome
    • 在你的python环境中的下图红框路径中找到 crypto 将其改成 Crypto

     

    代码部分

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Date    : 2018-11-27 17:21:23
    # @Author  : Sheldon (thisisscret@qq.com)
    # @blogs   : 谢耳朵的派森笔记
    # @Link    : https://www.cnblogs.com/shld/
    from Crypto.Cipher import AES
    from binascii import b2a_base64, a2b_base64
    
    def rpad(text, divisor: int, suffix):
        remain = len(text) % divisor
        if remain > 0:
            text += suffix * (divisor - remain)
        return text
    
    def encrypt(text, salt, key):
        fmtkey, fmtiv = map(lambda s: s.encode()[:16].ljust(16, b'\0'), (key, salt))
        cryptor = AES.new(fmtkey, AES.MODE_CBC, fmtiv)
        fmttext = rpad(text.encode(), 16, b'\0')
        ciphertext = cryptor.encrypt(fmttext)
        return str(b2a_base64(ciphertext))[2:-3].rstrip('=')
    
    def decrypt(text, salt, key):
        fmtkey, fmtiv = map(lambda s: s.encode()[:16].ljust(16, b'\0'), (key, salt))
        cryptor = AES.new(fmtkey, AES.MODE_CBC, fmtiv)
        fmttext = rpad(text, 4, '=')
        return cryptor.decrypt(a2b_base64(fmttext)).rstrip(b'\0').decode()
    
    if __name__ == "__main__":
        # key,salt应为16字节(汉字3字节,字母1字节),不足的自动补空格,超过的取前16字节
        ciphertext = encrypt("我们的祖国是花园~", "hello", "world")
        plaintext = decrypt(ciphertext, "hello", "world")

     

    转载于:https://www.cnblogs.com/shld/p/10027710.html

    展开全文
  • 字符串加密解密题目描述解题思路python代码实现 题目描述 输入两行字符串,第一行为需要加密的字符串,第二行为需要解密的字符串,按照加密解密规则输出两行,第一行为加密后的字符串,第二行为解密后的字符串。加密...

    题目描述

    输入两行字符串,第一行为需要加密的字符串,第二行为需要解密的字符串,按照加密解密规则输出两行,第一行为加密后的字符串,第二行为解密后的字符串。加密规则:将大写字母变换为该字母后一位字母、并小写输出,将小写字母变换为该字母后一位字母、并大写输出,将数字加1输出(9变换为0),其余字符不变。解密规则对应加密规则的逆过程。

    解题思路

    python练习-简单密码加密一样

    python代码实现

    import re
    
    alphaList = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    
    def Encrypt(aucPassword, aucResult=[]):
        for x in aucPassword:
            if re.match('[A-Z]', x):
                xLower = x.lower()
                idx = alphaList.index(xLower) + 1
                if idx == len(alphaList):
                    idx = 0
                x = alphaList[idx]
            elif re.match('[a-z]', x):
                idx = alphaList.index(x) + 1
                if idx == len(alphaList):
                    idx = 0
                x = alphaList[idx].upper()
            elif re.match('[0-9]', x):
                if x == '9':
                    x = '0'
                else:
                    x = str(int(x) + 1)
            aucResult.append(x)
        print("".join(aucResult))
    
    def unEncrypt(password, result=[]):
        for x in password:
            if re.match('[A-Z]', x):
                xLower = x.lower()
                idx = alphaList.index(xLower) - 1
                if idx == -1:
                    idx = len(alphaList)
                x = alphaList[idx]
            elif re.match('[a-z]', x):
                idx = alphaList.index(x) - 1
                if idx == -1:
                    idx = len(alphaList)
                x = alphaList[idx].upper()
            elif re.match('[0-9]', x):
                if x == '0':
                    x = '9'
                else:
                    x = str(int(x) - 1)
            result.append(x)
        print(''.join(result))
    
    pwdList = []
    for i in range(2):
        pwdList.append(input())
    Encrypt(pwdList[0])
    unEncrypt(pwdList[1])
    
    展开全文
  • 主要介绍了Python实现对字符串加密解密方法,结合实例形式分析了Python使用PyCrypto模块进行DES加密解密的相关操作技巧,需要的朋友可以参考下
  • Python_字符串_加密解密

    千次阅读 2020-04-27 11:19:08
    Python_字符串_加密解密

    目录:

    一、加密解密原理
    二、案例操作

    创作不易,各位看官,点个赞收藏、关注必回关、QAQ、您的点赞是我更新的最大动力!

    如果想要了解加密解密详细原理,即编码历史可以参考我的另外一篇专门讲字符串编码的在第三节:https://blog.csdn.net/weixin_44238683/article/details/105761646
    这里就简单的描述下原理


    一、加密解密原理

    在这里插入图片描述


    一、案例操作

    第一个方法、手工创建密码表:

    """
    加密解密
        maketrans 制作密码表
        translate 加密
        要求:通常注册在软件中的用户,密码必须加密后保存
    """
    # 字典映射关系表
    e = {"a": "1", "b": "2", "c": "3"}
    # 制作密码表
    table = str.maketrans(e)
    
    # 明文密码:
    s = "abc"
    # 加密:使用密码表table加密
    s2 = s.translate(table)
    print("明文:", s, "; 加密后的密文:", s2)
    
    # --------------------------------------
    e2 = {"1": "a", "2": "b", "3": "c"}
    table2 = str.maketrans(e2)
    
    # 解密
    s3 = s2.translate(table2)
    print("密码:", s2, "; 解密后:", s3)
    
    

    第二个方法、使用python中string创建密码表

    import string #引入python当中字符模块
    
    #使用大小写字母+数字构建 转换关系 s1 转换前字符,s2 转换后字符,按照顺序对应
    s1 = string.ascii_letters + string.digits
    #打印 s1 得到的结果: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    s2 = string.digits + string.ascii_letters
    #打印 s2 得到的结果: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    
    #通过zip()函数将2个表格映射再通过dict()封装成字典  也就是方法一的字典映射表了 之前是手工现在是通过模块操作
    e = dict(zip(s1, s2))
    
    
    # 下一步 制作 制作密码表
    table = str.maketrans(e)
    
    #后面代码就可以参考第一个方法 接着写了
    
    
    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

     

    加密和解密的字符串:

     

    package eoe.demo; 
    import java.security.SecureRandom; 
    import javax.crypto.Cipher; 
    import javax.crypto.KeyGenerator; 
    import javax.crypto.SecretKey; 
    import javax.crypto.spec.SecretKeySpec; 
    /** 
    * Usage: 
    * <pre> 
    * String crypto = SimpleCrypto.encrypt(masterpassword, cleartext) 
    * ... 
    * String cleartext = SimpleCrypto.decrypt(masterpassword, crypto) 
    * </pre> 
    * @author ferenc.hechler 
    */ 
    public class SimpleCrypto { 
    public static String encrypt(String seed, String cleartext) throws Exception { 
    byte[] rawKey = getRawKey(seed.getBytes()); 
    byte[] result = encrypt(rawKey, cleartext.getBytes()); 
    return toHex(result); 
    } 
    public static String decrypt(String seed, String encrypted) throws Exception { 
    byte[] rawKey = getRawKey(seed.getBytes()); 
    byte[] enc = toByte(encrypted); 
    byte[] result = decrypt(rawKey, enc); 
    return new String(result); 
    } 
    private static byte[] getRawKey(byte[] seed) throws Exception { 
    KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 
    sr.setSeed(seed); 
    kgen.init(128, sr); // 192 and 256 bits may not be available 
    SecretKey skey = kgen.generateKey(); 
    byte[] raw = skey.getEncoded(); 
    return raw; 
    } 
    
    private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception { 
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
    Cipher cipher = Cipher.getInstance("AES"); 
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec); 
    byte[] encrypted = cipher.doFinal(clear); 
    return encrypted; 
    } 
    private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception { 
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
    Cipher cipher = Cipher.getInstance("AES"); 
    cipher.init(Cipher.DECRYPT_MODE, skeySpec); 
    byte[] decrypted = cipher.doFinal(encrypted); 
    return decrypted; 
    } 
    public static String toHex(String txt) { 
    return toHex(txt.getBytes()); 
    } 
    public static String fromHex(String hex) { 
    return new String(toByte(hex)); 
    } 
    public static byte[] toByte(String hexString) { 
    int len = hexString.length()/2; 
    byte[] result = new byte[len]; 
    for (int i = 0; i < len; i++) 
    result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue(); 
    return result; 
    } 
    public static String toHex(byte[] buf) { 
    if (buf == null) 
    return ""; 
    StringBuffer result = new StringBuffer(2*buf.length); 
    for (int i = 0; i < buf.length; i++) { 
    appendHex(result, buf[i]); 
    } 
    return result.toString(); 
    } 
    private final static String HEX = "0123456789ABCDEF"; 
    private static void appendHex(StringBuffer sb, byte b) { 
    sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f)); 
    } 
    }
     

    转载于:https://my.oschina.net/lendylongli/blog/226800

    展开全文
  • 算法描述不管输入字符串多长,把该字符串填到一个刚好合适的N*N的正方形的格子中,然后以对角线为对称线,对格子里的字母进行交换,然后对折进行交换,列如,输入abcd则填入2x2的方格中:abcd先对角线交换,变为:...
  • import base64 import matplotlib.pyplot as plt # plt 用于显示图片 import numpy as np from PIL import Image # f = open('mima.txt',"r"); # linedata = f.read() # f.close() linedata='MG4...
  • Python字符串加密解密方法总结

    千次阅读 2019-05-09 15:57:46
    编程中经常会对字符串加密解密处理,特别是涉及到隐私的字符串,如密码等的时候,就需要加密,自己总结了一下,大致有三种:base64,win32com.client和自己写加密解密算法,当然最安全的就是自己写加密解密算法了...
  • Python字符串加密解密

    2019-12-23 18:35:10
    # c1,c2都是0~15之间的数,加上65就变成了A-P 的字符的编码 c [ j ] = c1 c [ j + 1 ] = c2 j = j + 2 return c . decode ( gbk )   def decrypt ( key , s ) : c = bytearray ( str ( s...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • python字符串加密解密

    2016-06-28 16:55:55
     这种方法也很方便,而且可以设置自己的密钥,比第一种方法更加安全,是加密解密的首选之策!   3. 还有就是自己写加密解密算法,比如: def  encrypt(key, s):  b  =  bytearray(str(s).encode( " gbk " )) ...
  •  这种方法也很方便,而且可以设置自己的密钥,比第一种方法更加安全,是加密解密的首选之策!   3. 还有就是自己写加密解密算法,比如: def encrypt(key, s):  b = bytearray(str(s).encode("gbk")...
  • python加密解密

    2014-07-29 09:28:00
    转自:[Python] 字符串加密解密 作者:lovebread 1. 最简单的方法是用base64: importbase64s1=base64.encodestring('helloworld')s2=base64.decodestring(s1)prints1,s2#aGVsbG8gd29ybGQ=\n#helloworld ...
  • Python 加密解密

    2018-02-12 11:46:00
    加密解密 ''' #MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节, # 通常用一个32位的16进制字符串表示。 md5 = hashlib.md5() update = md5.update('hhhhhaaa') print(md5.hexdigest()) #...
  • python利用异或算法实现字符串加密解密 代码: def crypt(source,key): from itertools import cycle result='' temp=cycle(key) for ch in source: result = result +chr(ord(ch)^ord(n...
  • 在生产中会遇到很多情况是需要加密字符串的(如访问或存储密码)这些需求造就了需要字符串加密,以及反解密的问题,推荐两种方法来实现,下附代码: #!/usr/bin/env python3 # -*- coding: utf-8 -*- def ...
  • Python 加密解密算法

    2017-05-24 11:57:09
    呃,今天来看看加密解密,本文讨论base64和hashlib库:来看看HASHLIB,他是一种单向摘要出定长字符串的方法:撸代码: In[18]:importtime,hashlib In[19]:t=int(time.time()) In[20]:t Out[20]:1495597851 In...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389
精华内容 155
关键字:

python加密解密字符串

python 订阅