Android 下的java.security和windows下的不一样?

本文讲述了将signjar类从Windows下的JDK移植到Android的过程。在移植过程中遇到的主要问题是MessageDigest类在不同平台上的SHA1加密结果不一致。通过研究SHA1算法并替换MessageDigest类,最终实现了与Windows环境一致的签名效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前端时间要把一个signjar的类移到android中,来给apk文件签名,这样就可以在android系统中生成apk文件。windows下的JDK中的signjar的类使用的是sun.security包,而android提供的加密相关的包是bouncycastle,加密相关的知识短时间内学不了,最快的办法还是把桌面环境下sun.security里面的包移植到android中使用。

    改完能跑,但是算出来的数据总是不对。开始以为是sun.security里面的一些算法在android里面有问题,就一直跟下去记log信息,跟了几天后赫然发现是java.security.MessageDigest类对一段数据进行SHA1加密的结果和windows环境下不一致。于是去网上找了SHA1的算法,替换掉MessageDigest来计算,得到的结果和windows环境下一致,并最终可以正确执行signjar。

    也许是android里面的security包要配合自己的bouncycastle才能正确使用?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值