开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 115|回复: 3
收起左侧

[易语言] 一小段py转易

[复制链接]
结帖率:74% (20/27)
发表于 昨天 23:47 | 显示全部楼层 |阅读模式   湖北省武汉市
200精币
[Python] 纯文本查看 复制代码
import base64
import hashlib

def password_hashing(account: str) -> str:
    # 1. 计算SHA-256哈希值
    sha256 = hashlib.sha256()
    sha256.update(account.encode('utf-8'))
    hashed_bytes = sha256.digest()

    # 4. 取前6个字节组合成长整数
    num = 0
    for i in range(6):
        num = (num << 8) | hashed_bytes

    # 5. 转换为62进制的6位字符串
    characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    short_str = []
    for _ in range(6):
        num, remainder = divmod(num, len(characters))
        short_str.append(characters[remainder])
    
    return ''.join(short_str)

# 测试用例
if __name__ == "__main__":
    test_account = "844404913"
    result = password_hashing(test_account)
    print(f"账号 '{test_account}' 的加密结果: {result}")


转出来的总是不一样 不知道是转utf8的姿势不对还是转62进制没写对


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (1/1)

签到天数: 6 天

发表于 3 小时前 | 显示全部楼层   江西省南昌市
  
.版本 2

窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口    

子程序名返回值类型公开备 注
_按钮1_被单击   
计算SHA256哈希值 (编辑框1.内容)


子程序名返回值类型公开备 注
计算SHA256哈希值文本型 计算指定文本的SHA - 256哈希值
参数名类 型参考可空数组备 注
待计算文本文本型
变量名类 型静态数组备 注
hProv整数型  
hHash整数型  
数据长度整数型  
哈希长度整数型  
哈希数据字节集  
结果文本文本型  
i整数型  

' 初始化加密服务提供者
如果 (CryptAcquireContext_ (hProv, 0, 0, #PROV_RSA_AES, #CRYPT_VERIFYCONTEXT ))
返回 (“初始化加密服务提供者失败”)
结束 如果

' 创建哈希对象
如果 (CryptCreateHash_ (hProv, #CALG_SHA_256, 0, 0, hHash))
CryptReleaseContext_ (hProv, 0)
返回 (“创建哈希对象失败”)
结束 如果

' 获取待计算数据的长度
数据长度 = 取字节集长度 (到字节集 (待计算文本))

' 更新哈希数据
如果 (CryptHashData_ (hHash, 到字节集 (待计算文本), 数据长度, 0))
CryptDestroyHash_ (hHash)
CryptReleaseContext_ (hProv, 0)
返回 (“更新哈希数据失败”)
结束 如果

' 获取哈希值的长度
哈希长度 = 32 ' SHA - 256哈希值长度为32字节
哈希数据 = 取空白字节集 (哈希长度)
如果 (CryptGetHashParam_ (hHash, #HP_HASHVAL, 哈希数据, 哈希长度, 0))
CryptDestroyHash_ (hHash)
CryptReleaseContext_ (hProv, 0)
返回 (“获取哈希值失败”)
结束 如果

' 将字节集转换为十六进制文本
结果文本 = “”
计次循环首 (哈希长度, i)
结果文本 = 结果文本 + 取十六进制文本 (哈希数据 [i], 2)
计次循环尾 ()

' 清理资源
CryptDestroyHash_ (hHash)
CryptReleaseContext_ (hProv, 0)

返回 (结果文本)


子程序名返回值类型公开备 注
CryptAcquireContext_逻辑型  "CryptAcquireContextA", 公开
参数名类 型参考可空数组备 注
phProv整数型
pszContainer整数型
pszProvider整数型
dwProvType整数型
dwFlags整数型

子程序名返回值类型公开备 注
CryptCreateHash_逻辑型  "CryptCreateHash", 公开
参数名类 型参考可空数组备 注
hProv整数型
Algid整数型
hKey整数型
dwFlags整数型
phHash整数型

子程序名返回值类型公开备 注
CryptHashData_逻辑型  "CryptHashData", 公开
参数名类 型参考可空数组备 注
hHash整数型
pbData字节集
dwDataLen整数型
dwFlags整数型

子程序名返回值类型公开备 注
CryptGetHashParam_逻辑型  "CryptGetHashParam", 公开
参数名类 型参考可空数组备 注
hHash整数型
dwParam整数型
pbData字节集
pdwDataLen整数型
dwFlags整数型

子程序名返回值类型公开备 注
CryptDestroyHash_逻辑型  "CryptDestroyHash", 公开
参数名类 型参考可空数组备 注
hHash整数型

子程序名返回值类型公开备 注
CryptReleaseContext_逻辑型  "CryptReleaseContext", 公开
参数名类 型参考可空数组备 注
hProv整数型
dwFlags整数型



i支持库列表   支持库注释   
spec (未知支持库)



大致是这样,

回复

使用道具 举报

结帖率:77% (43/56)

签到天数: 3 天

发表于 2 小时前 | 显示全部楼层   湖南省益阳市
password_hashing.zip (277.39 KB, 下载次数: 1)
回复

使用道具 举报

签到天数: 6 天

发表于 2 小时前 | 显示全部楼层   河南省驻马店市
  
窗口程序集名保 留  保 留备 注
程序集1   
变量名类 型数组备 注
字符集文本型  

子程序名返回值类型公开备 注
_启动子程序整数型 
字符集 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
测试 ()
返回 (0)
子程序名返回值类型公开备 注
SHA256哈希字节集 
参数名类 型参考可空数组备 注
账号文本型
变量名类 型静态数组备 注
哈希值文本型 
字节集字节集 
如果 (取文本长度 (账号) = 0)
调试输出 (“错误:账号不能为空”)
结束 ()



哈希值 = 校验_取sha256 (到字节集 (账号))
调试输出 (“[SHA256] 十六进制哈希值: ” + 哈希值)
字节集 = 字节集_十六进制到字节集 (哈希值)
如果 (取字节集长度 (字节集) < 6)
调试输出 (“错误:哈希字节集长度不足”)
结束 ()


返回 (字节集)
子程序名返回值类型公开备 注
密码哈希文本型 
参数名类 型参考可空数组备 注
账号文本型
变量名类 型静态数组备 注
哈希字节集字节集 
num长整数型 
i整数型 
余数整数型 
结果文本型 
o整数型 
哈希字节集 = SHA256哈希 (账号)
调试输出 (“哈希字节集:”, 取字节集数据 (哈希字节集, #字节型, 1), 取字节集数据 (哈希字节集, #字节型, 2), 取字节集数据 (哈希字节集, #字节型, 3), 取字节集数据 (哈希字节集, #字节型, 4), 取字节集数据 (哈希字节集, #字节型, 5), 取字节集数据 (哈希字节集, #字节型, 6))
num = 0
计次循环首 (6, i)
num = num × 256 + 取字节集数据 (哈希字节集, #字节型, i)
计次循环尾 ()
调试输出 (“组合后的整数:”, num)
结果 = “”
计次循环首 (6, o)
余数 = num % 62
num = num ÷ 62
结果 = 结果 + 取文本中间 (字符集, 余数 + 1, 1)  ' 反向拼接
调试输出 (“步骤”到文本 (6 - o + 1)“: num=”到文本 (num)“, remainder=”到文本 (余数)“, char=”取文本中间 (字符集, 余数 + 1, 1))
计次循环尾 ()
返回 (结果)
子程序名返回值类型公开备 注
测试  
变量名类 型静态数组备 注
账号文本型 
结果文本型 
账号 = “844404913”
结果 = 密码哈希 (账号)
调试输出 (“账号 '” + 账号 + “' 的加密结果: ” + 结果)


i支持库列表   支持库注释   
spec特殊功能支持库



输出信息:
* “[SHA256] 十六进制哈希值: b68bd4083544f5b5737a8afb73aa1fe903c2c8130e76dc1ba246287f62e521f7”
* “哈希字节集:” | 182 | 139 | 212 | 8 | 53 | 68
* “组合后的整数:” | 200711674017092
* “步骤6: num=3237285064791, remainder=50, char=O”
* “步骤5: num=52214275238, remainder=35, char=z”
* “步骤4: num=842165729, remainder=40, char=E”
* “步骤3: num=13583318, remainder=13, char=d”
* “步骤2: num=219085, remainder=48, char=M”
* “步骤1: num=3533, remainder=39, char=D”
* “账号 '844404913' 的加密结果: OzEdMD”
被调试易程序运行完毕



python打印输出:
[Python] 纯文本查看 复制代码
C:\Users\Administrator\Desktop\群消息监控\Wechat-Message\.venv\Scripts\python.exe C:\Users\Administrator\Desktop\wxhook群消息监控\Wechat-Message\dd.py 
哈希字节集: [182, 139, 212, 8, 53, 68]
组合后的整数: 200711674017092
步骤1: num=3237285064791, remainder=50, char=O
步骤2: num=52214275238, remainder=35, char=z
步骤3: num=842165729, remainder=40, char=E
步骤4: num=13583318, remainder=13, char=d
步骤5: num=219085, remainder=48, char=M
步骤6: num=3533, remainder=39, char=D
账号 '844404913' 的加密结果: OzEdMD


进程已结束,退出代码为 0





如果想让加密结果 = DMdEzO   更改易语言代码  

结果 = 结果 + 取文本中间 (字符集, 余数 + 1, 1)  ' 反向拼接
替换成
结果 = 取文本中间 (字符集, 余数 + 1, 1)  + 结果


python加密.e (958.67 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表