Python编程:对字符串加密的5种方式

举报
彭世瑜 发表于 2021/08/14 00:20:24 2021/08/14
【摘要】 本文中的加密,是指人不能直观看出信息的加密 即:肉眼不可见的加密 1. url编码 from urllib.parse import quote, unquote name = "王大锤" # 编码 utf8_name = quote(name) # utf-8 print(utf8_name) # %E7%8E%8B%E5%A4%A7%E9%94%A4 ...

本文中的加密,是指人不能直观看出信息的加密

即:肉眼不可见的加密

1. url编码

from urllib.parse import quote, unquote

name = "王大锤"

# 编码
utf8_name = quote(name)  # utf-8
print(utf8_name)
# %E7%8E%8B%E5%A4%A7%E9%94%A4   长度是 9

gbk_name = quote(name, encoding="gbk")
print(gbk_name)
# %CD%F5%B4%F3%B4%B8 长度是 6

# 解码
print(unquote(utf8_name))
print(unquote(gbk_name, encoding="gbk"))
# 王大锤
  
 

2. Base64编码

可参考:base64编码原理以及python中的base64模块

# base64编码是将二进制字节流编码为可打印的64个字符
# 以6位分割 bit位都是0,base64约定以‘=’代替
# z -> b'eg=='

import base64

name = "王大锤"

# 编码: 字符串 -> 二进制 -> base64编码
b64_name = base64.b64encode(name.encode())
print(b64_name)
# b'546L5aSn6ZSk'

# 解码:base64编码 -> 二进制 -> 字符串
print(base64.b64decode(b64_name).decode())
# 王大锤
  
 

3. 字符串转换ascii

name = "王大锤"

# 编码
ascii_name = list(map(ord, name))
print(ascii_name)
# [29579, 22823, 38180]

# 解码
print("".join(map(chr, ascii_name)))
# 王大锤
  
 

4. md5不可逆

解密推荐去cmd5

import hashlib

name = "王大锤"

# 编码
print(hashlib.md5(name.encode()).hexdigest())
# 59c22c7bb43b8561cfd3b52f507171cb
  
 

5. Unicode转中文

name = "王大锤"

# 编码
unicode_name = name.encode("unicode_escape")
utf8_name = name.encode("utf-8")
gbk_name = name.encode("gbk")
gbk2312_name = name.encode("gb2312")

print(unicode_name)
# b'\\u738b\\u5927\\u9524'

print(utf8_name)
# b'\xe7\x8e\x8b\xe5\xa4\xa7\xe9\x94\xa4'

print(gbk_name)
# b'\xcd\xf5\xb4\xf3\xb4\xb8'

print(gbk2312_name)
# b'\xcd\xf5\xb4\xf3\xb4\xb8'

# 解码

print(unicode_name.decode())
# \u738b\u5927\u9524

print(unicode_name.decode("unicode_escape"))
# 王大锤

print(utf8_name.decode())  # 默认utf-8
# 王大锤

print(gbk_name.decode("gbk"))
# 王大锤

  
 

参考:

  1. Crypto(密码)之各种python编码转换

  2. Python之编码转换

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/82708455

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。