开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 128|回复: 1
收起左侧

[易语言] X.509 证书的读取 修改生效时间和过期时间

[复制链接]
结帖率:74% (14/19)
发表于 2025-7-22 01:24:41 | 显示全部楼层 |阅读模式   山东省菏泽市
14精币
0x6201836AFA17155F1A1F638299AC9C0AD8B751FFC160B604CAA3A5F23A88A7C6F1F02ED874D66DEEC2F2455CBF212A0C9BE02520199EA898E1D823D0DF8807320A4178DC5F055B1BF3B4E541B6A09471DF8E566CC2934C4B05FB53C7873207BBFC3F3B73A080546414C7791E02EBCCF1499ED0A42BE09B2E70FB72C485D98FC1CD6B0C01A7308201A33082014BA003020102020902C4988B79D7000002300F060D2B0601040196640306837D056E30123110300E06035504030C07414230303030313020170D3230313032363038323435355A180F39393939313233313232353935395A301A3118301606035504030C0F42435F465F53544152335F47656E313034300F060D2B0601040196640306837D056E03210017CC7257E5F9DAF4B67025794CA55798839F182B7135CAA47BF5BAF24B80B6B0A3819F30819C3017060D2B0601040196640306837D05650101FF04030401043017060D2B0601040196640306837D056B0101FF0403040100301D0603551D0E0416041449F68BDA9C097C5141AC1F447AA54BF42D0AA362301F0603551D2304183016801480DD4558CC84CC0AC164D518ECA645065B9614363028060D2B0601040196640306837D056C0101FF041431120C0742435F463230360C0742435F46323233300F060D2B0601040196640306837D056E0341004D2D27166EE60BD6251F0ED1D30E63C0ADAEA144E6BD1031A43D6C37A8431ED6FB19B8241F1FDD4196EB23FF49AF62A0FF210B242A9EB696006F877B51967307                       

3101026907E605140F2C300637FFB4CC0634E988C506E83B02028F9407A26C3184BDE725689D140901B9A4736252677B593AD9963F427372467FFF32B238A3FEC666B6A4EFE379E48673ACE02D76C72DF8A2ECA451425E55B923DEBABCAAF16973F203E2D20D7AAEBE0B7493C46D5B90EF6CCF8707315D7EC9DB00243B535E4A1E42711102A498F578DF1F405598FFC459695AE5DEC24695788BDA8E79C1D6B130EA9A7EC5DC5548527D96D6068BBC65FA57B417F02392A34757336E00B5CF6A4F0418DC0201CE308201CA30820172A003020102020802C498D46B8C0001300F060D2B0601040196640306837D056E30123110300E06035504030C07414230303030313020170D3231303432303230353731385A180F39393939313233313232353935395A30233121301F06035504030C183130303031323630303834363230333231323031323230313034300F060D2B0601040196640306837D056E0321005BA55DE3D407B0DFBD6F4CB86750F5D3DDF09DC8F9D7736C008EA94C90AAFC02A381BE3081BB3017060D2B0601040196640306837D05650101FF04030401043017060D2B0601040196640306837D056B0101FF0403040100301D0603551D0E041604141AEBFB1B0FD3E364D31725D907D1774F3F8C3B84301F0603551D2304183016801480DD4558CC84CC0AC164D518ECA645065B961436302E060D2B0601040196640306837D056C0101FF041A31180C06455A533136370C06455A533230360C06455A533232333017060D2B0601040196640306837D056D0101FF0403040101300F060D2B0601040196640306837D056E0341000579528407BA69B243E0391C837A8FA73C892DAA0023E2B30F3126AFE5B5258278C99D9F4F4AC08754D9185E360BDFCC7DAB4E5C1DAB3080A620F6257AF4700E
上面是两个证书,第一个是要读取证书里面的内容 .修改他的过期时间,修改后,就是第二个证书了.网站的大佬 谁能做.红包感谢


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

签到天数: 3 天

发表于 2025-7-23 03:26:01 | 显示全部楼层   河北省秦皇岛市
需使用 Crypt32.dll提供的证书处理 API,以及字节集操作函数解析 ASN.1 结构。
  
' 声明 Crypt32 证书 API
DLL命令名返回值类型公开备 注
CryptStringToBinaryA逻辑型 
DLL库文件名:
crypt32.dll
在DLL库中对应命令名:
公开
参数名类 型传址数组备 注
pszString文本型
cchString整数型-1 表示自动计算长度
dwFlags整数型0x00000001(CRYPT_STRING_HEX)
pbBinary字节集
pcbBinary整数型
pdwFlagsUsed整数型0
pvReserved整数型0
DLL命令名返回值类型公开备 注
CertCreateCertificateContext整数型 
DLL库文件名:
crypt32.dll
在DLL库中对应命令名:
公开
参数名类 型传址数组备 注
dwCertEncodingType整数型0x00000001(X509_ASN_ENCODING)
pbCertEncoded字节集
cbCertEncoded整数型
hCryptProv整数型0
DLL命令名返回值类型公开备 注
CertFreeCertificateContext逻辑型 
DLL库文件名:
crypt32.dll
在DLL库中对应命令名:
公开
参数名类 型传址数组备 注
pCertContext整数型
DLL命令名返回值类型公开备 注
CryptBinaryToStringA逻辑型 
DLL库文件名:
crypt32.dll
在DLL库中对应命令名:
公开
参数名类 型传址数组备 注
pbBinary字节集
cbBinary整数型
dwFlags整数型0x00000001(CRYPT_STRING_HEX)
pszString文本型
pcchString整数型



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


解析证书:提取有效期字段

  
子程序名返回值类型公开备 注
解析证书有效期文本型 返回格式:"notBefore|notAfter"
参数名类 型参考可空数组备 注
证书十六进制文本文本型
.局部变量 证书字节集, 字节集
.局部变量 字节集长度, 整数型
.局部变量 证书上下文, 整数型
.局部变量 证书信息, 字节集
.局部变量 notBefore, 文本型
.局部变量 notAfter, 文本型
.局部变量 解析结果, 文本型
' 1. 十六进制文本转字节集(DER 编码)
字节集长度 = 0
CryptStringToBinaryA (证书十六进制文本, -1, 0x00000001, #空字节集, 字节集长度, 0, 0)
证书字节集.取空白字节集 (字节集长度)
CryptStringToBinaryA (证书十六进制文本, -1, 0x00000001, 证书字节集, 字节集长度, 0, 0)
' 2. 创建证书上下文(解析证书结构)
证书上下文 = CertCreateCertificateContext (0x00000001, 证书字节集, 字节集长度)
如果 (证书上下文 = 0)
返回 ("解析失败")

' 3. 定位 Validity 字段(ASN.1 结构解析,需手动定位偏移量)
' 注:实际需根据 ASN.1 层级解析,此处简化为示例
' (推荐使用 ASN.1 解析工具先确定 notBefore/notAfter 在字节集中的偏移)
notBefore = 取时间字段 (证书字节集, 120)  ' 假设偏移 120 为 notBefore
notAfter = 取时间字段 (证书字节集, 134)   ' 假设偏移 134 为 notAfter
' 4. 释放资源
CertFreeCertificateContext (证书上下文)
返回 (notBefore + "|" + notAfter)
子程序名返回值类型公开备 注
取时间字段文本型 
参数名类 型参考可空数组备 注
证书字节集字节集
偏移量整数型
' 从字节集偏移量提取时间(UTC 格式,长度通常 13 字节:如 "201026082455Z")
返回 (到文本 (字节集_取出字节集 (证书字节集, 偏移量, 13)))


修改有效期:替换时间戳

  
子程序名返回值类型公开备 注
修改证书有效期文本型 返回修改后的证书十六进制文本
参数名类 型参考可空数组备 注
原证书十六进制文本型
新生效时间文本型格式:YYMMDDHHMMSSZ(如 210420205718Z)
新过期时间文本型同上
.局部变量 证书字节集, 字节集
.局部变量 字节集长度, 整数型
.局部变量 新证书字节集, 字节集
.局部变量 结果十六进制, 文本型
.局部变量 结果长度, 整数型
' 1. 原证书转字节集
字节集长度 = 0
CryptStringToBinaryA (原证书十六进制, -1, 0x00000001, #空字节集, 字节集长度, 0, 0)
证书字节集.取空白字节集 (字节集长度)
CryptStringToBinaryA (原证书十六进制, -1, 0x00000001, 证书字节集, 字节集长度, 0, 0)
' 2. 替换时间字段(需根据实际偏移量修改)
新证书字节集 = 证书字节集
字节集_替换 (新证书字节集, 120, 13, 到字节集 (新生效时间))  ' 替换 notBefore
字节集_替换 (新证书字节集, 134, 13, 到字节集 (新过期时间))  ' 替换 notAfter
' 3. 字节集转十六进制文本
结果长度 = 0
CryptBinaryToStringA (新证书字节集, 取字节集长度 (新证书字节集), 0x00000001, "", 结果长度)
结果十六进制 = 取空白文本 (结果长度)
CryptBinaryToStringA (新证书字节集, 取字节集长度 (新证书字节集), 0x00000001, 结果十六进制, 结果长度)
返回 (结果十六进制)




回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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