資源簡介
花了很多時間在網上尋找國密算法的實現資料,很少有人提供完整的JAVA與JS實現代碼,附件將國密算法SM2 SM3 SM4的JAVA實現與JS實現整合在一個WEB項目中,JAVA版算法接口封裝在com.ytkj.usp.sm.SMutil中,JS版本實現放在sm.js中(使用請參考/sm-tomcat/test.html這個例子),大家可以直接在項目里使用,WORD文檔里給出了我們公司的具體加密策略,希望能解決大家的煩惱

代碼片段和文件信息
package?com.ytkj.usp.sm;
import?java.math.BigInteger;??
import?org.bouncycastle.crypto.AsymmetricCipherKeyPair;??
import?org.bouncycastle.crypto.params.ECPrivateKeyParameters;??
import?org.bouncycastle.crypto.params.ECPublicKeyParameters;??
import?org.bouncycastle.math.ec.ECPoint;?
public?class?Cipher?{
?private?int?ct;??
????private?ECPoint?p2;??
????private?SM3Digest?sm3keybase;??
????private?SM3Digest?sm3c3;??
????private?byte?key[];??
????private?byte?keyOff;??
??
????public?Cipher()???
????{??
????????this.ct?=?1;??
????????this.key?=?new?byte[32];??
????????this.keyOff?=?0;??
????}??
??
????private?void?Reset()???
????{??
????????this.sm3keybase?=?new?SM3Digest();??
????????this.sm3c3?=?new?SM3Digest();??
??????????
????????byte?p[]?=?Util.byteConvert32Bytes(p2.getX().toBigInteger());??
????????this.sm3keybase.update(p?0?p.length);??
????????this.sm3c3.update(p?0?p.length);??
??????????
????????p?=?Util.byteConvert32Bytes(p2.getY().toBigInteger());??
????????this.sm3keybase.update(p?0?p.length);??
????????this.ct?=?1;??
????????NextKey();??
????}??
??
????private?void?NextKey()???
????{??
????????SM3Digest?sm3keycur?=?new?SM3Digest(this.sm3keybase);??
????????sm3keycur.update((byte)?(ct?>>?24?&?0xff));??
????????sm3keycur.update((byte)?(ct?>>?16?&?0xff));??
????????sm3keycur.update((byte)?(ct?>>?8?&?0xff));??
????????sm3keycur.update((byte)?(ct?&?0xff));??
????????sm3keycur.doFinal(key?0);??
????????this.keyOff?=?0;??
????????this.ct++;??
????}??
??
????public?ECPoint?Init_enc(SM2?sm2?ECPoint?userKey)???
????{??
????????AsymmetricCipherKeyPair?key?=?sm2.ecc_key_pair_generator.generateKeyPair();??
????????ECPrivateKeyParameters?ecpriv?=?(ECPrivateKeyParameters)?key.getPrivate();??
????????ECPublicKeyParameters?ecpub?=?(ECPublicKeyParameters)?key.getPublic();??
????????BigInteger?k?=?ecpriv.getD();??
????????ECPoint?c1?=?ecpub.getQ();??
????????this.p2?=?userKey.multiply(k);??
????????Reset();??
????????return?c1;??
????}??
??
????public?void?Encrypt(byte?data[])???
????{??
????????this.sm3c3.update(data?0?data.length);??
????????for?(int?i?=?0;?i? ????????{??
????????????if?(keyOff?==?key.length)??
????????????{??
????????????????NextKey();??
????????????}??
????????????data[i]?^=?key[keyOff++];??
????????}??
????}??
??
????public?void?Init_dec(BigInteger?userD?ECPoint?c1)??
????{??
????????this.p2?=?c1.multiply(userD);??
????????Reset();??
????}??
??
????public?void?Decrypt(byte?data[])???
????{??
????????for?(int?i?=?0;?i? ????????{??
????????????if?(keyOff?==?key.length)??
????????????{??
????????????????NextKey();??
????????????}??
????????????data[i]?^=?key[keyOff++];??
????????}??
??
????????this.sm3c3.update(data?0?data.length);??
????}??
??
????public?void?Dofinal(byte?c3[])???
????{??
????????by
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\
?????文件?????????841??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.classpath
?????文件?????????909??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.project
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\
?????文件?????????567??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\.jsdtscope
?????文件?????????364??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\org.eclipse.jdt.core.prefs
?????文件?????????479??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\org.eclipse.wst.common.component
?????文件?????????345??2019-01-15?22:05??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件??????????49??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件???????????6??2019-01-15?22:04??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\
?????文件????????3448??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\Cipher.class
?????文件????????3144??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM2.class
?????文件????????4556??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM2Utils.class
?????文件????????5312??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM3.class
?????文件????????2965??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM3Digest.class
?????文件?????????485??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM4$SM4_Context.class
?????文件????????8170??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM4.class
?????文件????????4414??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SM4Utils.class
?????文件?????????419??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SMutil$SM2Key.class
?????文件????????4309??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\SMutil.class
?????文件???????10084??2019-01-19?22:34??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\build\classes\com\ytkj\usp\sm\Util.class
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\src\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\src\com\
?????目錄???????????0??2019-01-19?22:44??SM2?SM3?SM4國密算法JAVA與JS實現版本\sm-tomcat\src\com\ytkj\
............此處省略20個文件信息
- 上一篇:javaSE關于集合的Xmind總結--詳細版
- 下一篇:jsp論壇設計與實現
評論
共有 條評論