当前位置: 首页 > news >正文

找人做网站属于了解些什么呢合肥seo管理

找人做网站属于了解些什么呢,合肥seo管理,电商网站开发报价单,微信公众号服务平台电话先看抖音的格式 对ID加密的格式 MB4EENgLILJPeQKhJht-rjcc6y0ECMk_RGTceg6JBAA 需求是 同一个ID 比如 413884936367560 每次获取得到的加密ID都是不同的#xff0c;最终解密的ID都是413884936367560 注意这是一个加密后可解密原文的方式#xff0c;不是单向加密 那么如下进行… 先看抖音的格式 对ID加密的格式 MB4EENgLILJPeQKhJht-rjcc6y0ECMk_RGTceg6JBAA 需求是 同一个ID 比如 413884936367560  每次获取得到的加密ID都是不同的最终解密的ID都是413884936367560 注意这是一个加密后可解密原文的方式不是单向加密 那么如下进行一个模仿。目前拆测 固定前缀MB4E和后缀BAA 这俩要么和机房有关 要么就是和场景有关的一个标识性设置。 下面分别由Python和golang进行实现 记的安装 pip install pycryptodome from Cryptodome.Cipher import AES import base64 import os# 固定前缀和后缀 这俩要么和机房有关 要么就是和场景有关的一个标识性设置 PREFIX MB4EE SUFFIX BAA# 密钥假设为16字节 KEY b1234567890123456def pad(data):# PKCS7 填充padding_len 16 - (len(data) % 16)return data bytes([padding_len] * padding_len)def unpad(data):# 去除 PKCS7 填充return data[:-data[-1]]def encrypt_id(user_id):# 生成随机IV16字节iv os.urandom(16)# 创建AES加密器cipher AES.new(KEY, AES.MODE_CFB, iv)# 加密用户IDuser_id_bytes user_id.to_bytes((user_id.bit_length() 7) // 8, big)padded_user_id pad(user_id_bytes)encrypted_id cipher.encrypt(padded_user_id)# 将IV和加密结果编码为URL安全的Base64encoded_id base64.urlsafe_b64encode(iv encrypted_id).decode(utf-8)# 去除编码结果中的填充字符 encoded_id encoded_id.rstrip()# 添加固定前缀和后缀sec_user_id PREFIX encoded_id SUFFIXreturn sec_user_iddef decrypt_id(sec_user_id):# 去除固定前缀和后缀encoded_id sec_user_id[len(PREFIX):-len(SUFFIX)]# 解码URL安全的Base64并手动添加填充字符 padding_len 4 - (len(encoded_id) % 4)encoded_id * padding_len# 解码Base64decoded_id base64.urlsafe_b64decode(encoded_id)# 提取IV和加密结果iv decoded_id[:16]encrypted_id decoded_id[16:]# 创建AES解密器cipher AES.new(KEY, AES.MODE_CFB, iv)# 解密用户IDpadded_user_id cipher.decrypt(encrypted_id)user_id_bytes unpad(padded_user_id)user_id int.from_bytes(user_id_bytes, big)return user_id# 示例 user_id 413884936367560 sec_user_id encrypt_id(user_id) print(fEncrypted ID: {sec_user_id})decrypted_id decrypt_id(sec_user_id) print(fDecrypted ID: {decrypted_id}) 运行结果如下 go语言的实现 package mainimport (crypto/aescrypto/ciphercrypto/randencoding/base64encoding/binaryerrorsfmtiostrings )// 固定前缀和后缀 const (PREFIX MB4EESUFFIX BAA )// 密钥假设为16字节 var key []byte(1234567890123456)// 填充数据 func pad(data []byte) []byte {padding : aes.BlockSize - len(data)%aes.BlockSizepadtext : make([]byte, padding)for i : range padtext {padtext[i] byte(padding)}return append(data, padtext...) }// 去除填充数据 func unpad(data []byte) ([]byte, error) {length : len(data)unpadding : int(data[length-1])if unpadding length {return nil, errors.New(unpad error. This could happen when incorrect encryption key is used)}return data[:(length - unpadding)], nil }// 加密用户ID func encryptID(userID int64) (string, error) {// 生成随机IV16字节iv : make([]byte, aes.BlockSize)if _, err : io.ReadFull(rand.Reader, iv); err ! nil {return , err}// 创建AES加密器block, err : aes.NewCipher(key)if err ! nil {return , err}// 加密用户IDuserIDBytes : make([]byte, 8)binary.BigEndian.PutUint64(userIDBytes, uint64(userID))paddedUserID : pad(userIDBytes)ciphertext : make([]byte, len(paddedUserID))mode : cipher.NewCFBEncrypter(block, iv)mode.XORKeyStream(ciphertext, paddedUserID)// 将IV和加密结果编码为URL安全的Base64encodedID : base64.URLEncoding.EncodeToString(append(iv, ciphertext...))// 去除编码结果中的填充字符 encodedID strings.TrimRight(encodedID, )// 添加固定前缀和后缀secUserID : PREFIX encodedID SUFFIXreturn secUserID, nil }// 解密用户ID func decryptID(secUserID string) (int64, error) {// 去除固定前缀和后缀encodedID : secUserID[len(PREFIX) : len(secUserID)-len(SUFFIX)]// 解码URL安全的Base64并手动添加填充字符 paddingLen : 4 - len(encodedID)%4encodedID strings.Repeat(, paddingLen)// 解码Base64decodedID, err : base64.URLEncoding.DecodeString(encodedID)if err ! nil {return 0, err}// 提取IV和加密结果iv : decodedID[:aes.BlockSize]ciphertext : decodedID[aes.BlockSize:]// 创建AES解密器block, err : aes.NewCipher(key)if err ! nil {return 0, err}// 解密用户IDmode : cipher.NewCFBDecrypter(block, iv)mode.XORKeyStream(ciphertext, ciphertext)paddedUserID, err : unpad(ciphertext)if err ! nil {return 0, err}// 转换为int64userID : int64(binary.BigEndian.Uint64(paddedUserID))return userID, nil }func main() {userID : int64(66015130374)secUserID, err : encryptID(userID)if err ! nil {fmt.Println(Encrypt error:, err)return}fmt.Println(Encrypted ID:, secUserID)decryptedID, err : decryptID(secUserID)if err ! nil {fmt.Println(Decrypt error:, err)return}fmt.Println(Decrypted ID:, decryptedID) } 运行结果如下
http://www.hkea.cn/news/14486617/

相关文章:

  • 哪个网站可以做c 的项目怎样退订3d卫星街景会员费用
  • 人才网网站建设方案wordpress mce
  • 广州市哪有做网站的广州网站备案
  • 用模板做的网站多少钱如何做网站将数据上传
  • 网站开发语言选择服装设计公司排行榜
  • 表格如何做网站wordpress内容函数
  • 长沙雨花区建设局网站做网站网站代理怎么找客源
  • 鹤壁做网站公司电话wordpress 恋月
  • 四川鸿业建设集团网站成都专业做网站的公司
  • gudao网站建设建筑网站 法人签字
  • 网站设计建设公司服务商网站备案地
  • 建设环保网站的目的与功能分析电子商务网站订单功能
  • 建设网站的不足建筑工程网络图实例
  • 做网站接电话一般要会什么问题网站建设功能
  • 杭州互助盘网站开发那个网站可以兼职做效果图
  • dw做的网站链接东莞网页制作模版
  • 哈尔滨网站建设价格低长沙网站建设王道下拉惠
  • 怎么做网站快照餐饮网站开发毕业设计
  • 自己能注册网站吗承接各类网站建设
  • 网站建设与维护试卷 一做爰的视频网站
  • 网站设计好 如何将本地网站发布宁波关键词网站排名
  • 自己的域名可以转给做网站的账号吗口碑好的做网站公司
  • 重庆专业网站建设公司哪家好网店管家官网
  • 营销型企业网站有哪些类型永久免费可联网的进销存软件
  • 南京玄武区建设局网站网站代码多彩
  • 兰州北山生态建设局网站南昌房产网站建设
  • 网站维护 内容怎么样做企业网站
  • ps插件国外网站小型旅游网站建设方案
  • vuecms网站开发wordpress php5.3.5访问慢
  • 做套现网站房屋管理系统