check_issued
check_chain_extensions
check_name_constraints
check_trust
check_revocation
internal_verify
check_policy
其中 internal_verify (在线查看)验证了证书的有效期, 进入这个函数, 在 1654 行找到这个代码:
ok = check_cert_time(ctx, xs)
if (!ok)
goto end
看看 check_cert_time 函数, 确认是检查 notBefore 和 notAfter, 因此将上面三行代码注释掉, 验证证书时就不会检测有效期了.
然后就是重新编译 openssl, 将 libcrypto.a 集成到项目里了~
签字是基于非对称算法加密文件特征码的一种特殊的算法。就是用非对称算法,加密文件经过不可逆算法计算出来的哈希值,也就是特征码。这种特征码因为是不可逆算法,你没办法简单的修改了文件后还能保持相同的特征码(当然理论上是存在的,但因为算法复杂而且整个文件都在参与计算,需要保证相同特征码而且文件还起作用几乎不可能,除非有很强的计算机性能强行去猜)。特征码很小,可以作为一种文件正确性的标识符号。
非对称算法,就是加密和解密是两个不同的算法,或者不同的数据,有两个钥匙 A 和 B 。用 A 加密的,可以用 B 解密,相反,用 B 加密的,可以用 A 解密。而且 A、B 不能互相计算出来对方,只能同时生成(当然如果计算机足够多,性能足够强势可以算出来的,不过现在的技术是全球计算机一起跑,也需要几万年)。
作用,就是你计算文件哈希值后,再用你这边的密匙解密加密后的签字数据,获得对方提供的哈希值做比对,来确定你得到的文件是不是被修改了。
你的密匙和对方加密的密匙配套,而且哈希值一致。那么就可以认定这个文件内容签字,这个文件是对方提供的,中间没有经过他人的修改,也没有发生文件的损坏。
这种被修改或者损坏后,签字还能同样的概率太低了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)