美文网首页
12:字符串加密、解密

12:字符串加密、解密

作者: 寻水的_鱼 | 来源:发表于2018-08-14 21:57 被阅读14次

1、字符串的编码、解码

编码:将计算机中的字符串按照一定的顺序表示成二进制数据的过程

二进制: 0/1 每一个二进制数字,表示一位,通常计算机中:0000 0001
字节: 二进制数据~8位一个字节:0000 0001->1个字节
字符: 2个字节->1个字符;通常情况下我们使用的字符串~就是使用字符编码的!

各国字符编码都不一样:
1、计算机-> 表示[英文字母、数字、部分特殊符号]-> ascii编码[0~256]
2、万国码,统一字符编码[号称可以统一全球范围内任何语言的表示方式]
任何语言中的任何数据,都可以使用一个字符来表示unicode编码
3、中国有GB2312-> GBK -> GB18030
4、数据传输编码:unicode transfer format 8 bit [UTF-8]
python中的编码解码:
要命的规则:字符串的编码解码,一直都是任何语言中一个难点和重点
任何字符串->都是由字节组成的!

python3中:字符:(str);字节(bytes)
字符->字节:encode 编码:将一个字符串编码成计算机可以操作的二进制数据
字节->字符:decode 解码:将一个二进制数据按照指定的编码~解码成自然数据

s = “大天朝”   s:<class ‘str’>
x = s.encode(“utf-8”)   x:<class ‘bytes’>
x-> b’\xb9\x00\xa5..’

x2 = x.decode(“utf-8”)  x2:<class ‘str’>
x2 -> “大天朝”

2、加密解密操作:

什么是加密:将一个明文数据,按照指定的算法,运算得到一个其他的可以隐藏真实信息的密文数据,这个过程称为加密;处理的算法称为加密算法;用到的关键数据称为密钥
什么是解密:按照指定的算法和关键数据,将一个密文数据进行逆向运算得到正确的明文数据的过程成为解密操作


(1)、单向加密算法:只能加密,不能解密的算法
如:用户账号密码(单向加密)存储,此时任何人都不能查看该用户的明文密码
流程->用户输入明文密码->加密->和存储的密文密码进行比较->相等-成功
单向散列加密算法-> MD5加密
单项哈希加密算法-> SHAX加密


(2)、双向加密算法:可以加密,加密的数据可以解密得到明文数据
使用在更多的场景;数据进行加密传输->目标地址->解密得到明文数据进行处理
对称加密:加密和解密使用相同的秘钥;
非对称加密:加密和解密使用不同的秘钥;如HTTPS传输数据


python中的hashlib模块

hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法

import hashlib

string = "beyongjie"

md5 = hashlib.md5()
md5.update(string.encode('utf-8'))     #注意将字符串转码
res = md5.hexdigest() #加密后的字符串
print("md5加密结果:",res)

#其他加密都差不多

注意:hashlib 加密啊的字符串类型为二进制编码,直接加密字符串会报如下错误:

TypeError: Unicode-objects must be encoded before hashing

有两种方式可以将字符串转化为二进制数据

  • 可以使用encode进行转换
string = "beyongjie"
shaa1 = hashlib.sha1()
shaa1.update(string.encode('utf-8'))
res = shaa1.hexdigest()
print("sha1采用encode转换加密结果:",res)
  • 或者使用byte转换为二进制
shab1 = hashlib.sha1()
shab1.update(bytes(string,encoding='utf-8'))
res = shab1.hexdigest()
print("sha1采用byte转换的结果:",res)

相关文章

  • python 加密解密

    Python 利用 pyDes对字符串进行解密 base64加密解密 md5加密

  • Android网络前篇:公钥密钥加密原理

    一、基础知识 密钥 一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。 对称加密算法 加密和解密都是...

  • 调研云上的密钥管理服务KMS

    1. 产品调研 Cryption对称加密对称解密非对称加密非对称解密批量加解密字符串or 字节数组?其他AWS E...

  • C基础—文件操作

    读取文本文件 文件的写入 文件的拷贝 获取文件的大小 文件加密 文件解密 字符串密码进行加密 对字符串密码进行解密...

  • 12:字符串加密、解密

    1、字符串的编码、解码 编码:将计算机中的字符串按照一定的顺序表示成二进制数据的过程 各国字符编码都不一样:1、计...

  • 第6章 网络编程与网络框架

    6.1 公钥密钥加密原理 6.1.1 基础知识 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算...

  • 字符串的加密与解密(3DES、sha1、MD5) - swift

    对于字符串的加密解密,可以给String类扩展方法,方便使用 Swift中使用3DES/sha1/MD5加密解密算...

  • vue-cli中HamcSHA256加密

    在线加密解密地址 安装依赖 在文件中引入 字符串加密 对象 各种语言HMAC SHA256实现

  • 加解密算法

    一、加密算法种类 1密钥 密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密或解密算法,以使算法能够正确对...

  • MD5字符串的加密解密

    至于为什么要给字符串加密解密,各种加密解密的方式优缺点对比等等,本文都不会讲,弄点实用的代码,给需要应急的朋友应急...

网友评论

      本文标题:12:字符串加密、解密

      本文链接:https://www.haomeiwen.com/subject/irjcvftx.html