SM3加密算法说明:
SM3杂凑密码算法说明: SM3杂凑密码算法.pdf
源码下载地址: https://github.com/PopezLotado/SM2Java
算法逻辑及说明:
算法的实现是通过获取源文件byte[],先调用一个叫padding的方法对末位填充,然后提取hash,起初因为只需要处理文本、图片等小文件,只加了一个接收inputstream的方法,调用原算法的内容转byte[],直到后来需要处理视频等大文件,生产上报了内存溢出,因为算法的所有分支,最终都是获取完整的byte[],没办法处理大文件。
对hash(InputStream inputStream)优化处理及结果:
文件上传70M文件,运行时间及内存监控结果:
内存占用由原来hash(bytes)使用600M+,变为:300M左右。
运行时间:相差不大。若把hash中的yte[] bytes = new byte[1024];改为 byte[64],则时间为27秒。;