编码、解码、base64、MD5

前言

程序员对短信平台的使用接口进行了二次封装,在医院的项目中需要使用他们封装好的接口对接zabbix进行业务报警,在使用过程中使用python进行实现,
过程中使用了:
1.MD5
2.编码、解码知识
3.base64
在使用过程中,突然有点对知识有些认识不清楚了,特此根据自己理解记录了文档

一、字符集

字符集是"字符的集合",规定了这些集合中有哪些字符.每种字符集 存储字符所占用的字节数也不一样。
比如: GBK GB2312 unicode

二、字符编码

字符编码也就是平常我们指的"编码和解码"
字符编码是"一个过程",是把字符 按照某种 “字符集的存储规则” 转换成二进制的过程

三、实例

1.编码

对s字符串使用 GBK字符集格式 进行"字符编码"

s = "我喜欢python"
s1 = s.encode("GBK")
print(s1)

结果如下:
b'\xce\xd2\xcf\xb2\xbb\xb6python'

2.解码

成功的使用相同的字符集进行了解码

s = "我喜欢python"
s1 = s.encode("GBK")

s2 = s1.decode("GBK")
print(s2)


结果如下:
我喜欢python

四、hashlib

haselib是加密模块,支持摘要算法,散列算法等等。md5是常见的摘要算法

使用如下:

import hashlib

s = "我喜欢python"

#实例化一个对象
md5 = hashlib.md5()     
#对bytes类型的数据进行加密
md5.update(s.encode("utf-8"))
#得到加密后的字符串
value = md5.hexdigest()

print(value)
print(type(value))

结果如下:
得到一串字符串

f6805634813253a48571ec23014e2eb8
<class 'str'>

五、base64

Base64是一种用64个字符来表示任意二进制数据的方法。
它不是一种加解密技术,是一种简单的编解码技术.
这种编码技术不是对 字符进行编码,而是对二进制进行编码。
md5和base64都是对二进制进行加工

提醒:在python中,数据转成2进制后不是直接以010101的形式表示的,而是用一种叫bytes(字节)的类型来表示的.

import hashlib

s = "我喜欢python"
s1 = s.encode("gbk")

print(type(s1))

结果如下:
<class 'bytes'>

1.编码

使用base64对二进制进行编码

from base64 import b64decode,b64encode
import hashlib


s = "我喜欢python"
s1 = s.encode("gbk")

b = b64encode(s1)
print(b)
print(type(b))

结果如下:

b'ztLPsru2cHl0aG9u'
<class 'bytes'>

2.解码

s = "我喜欢python"
s1 = s.encode("gbk")

b = b64encode(s1)

print(b64decode(b).decode("gbk"))

结果如下:
我喜欢python
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MD5计算的结果是一个128位(16字节)的散列值,而Base64是一种基于64个可打印字符来表示二进制数据的编码方法。这两者之间是不同的概念。MD5是一种信息摘要算法,用于确保信息传输的完整性和一致性,而Base64是一种编码方式,用于将二进制数据转换成可打印字符的文本数据。 如果你想对一个字符串进行MD5计算,并将计算结果以Base64编码的形式表示,你可以先对字符串进行MD5计算,然后将计算结果转换成Base64编码。具体步骤如下: 1. 使用MD5算法对字符串进行计算,得到一个128位的散列值。 2. 将散列值转换成二进制形式。 3. 将二进制数据按照每6比特(2的6次方=64)进行分组,并计算每组的十进制值。 4. 根据十进制值在Base64编码索引表中找到对应的字符。 5. 将得到的字符拼接起来,即为Base64编码结果。 需要注意的是,Base64编码通常用等号(=)字符来替换最后的A,作为结束符号。在Base64解码时遇到等号时,即可知道一个Base64编码字符串的结束。 所以,如果你想对一个字符串进行MD5计算,并将计算结果以Base64编码的形式表示,可以先对字符串进行MD5计算,然后将计算结果转换成Base64编码。 #### 引用[.reference_title] - *1* *2* *3* [C++实战md5base64算法实现](https://blog.csdn.net/weixin_44834554/article/details/127074397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值