<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    當(dāng)前位置:首頁 科技百科 java sm3加密

    java sm3加密

    文檔

    java sm3加密

    java sm3加密是一種加密算法。Sm3算法是我國自己設(shè)計(jì)的哈希算法,作用主要是數(shù)字簽名及驗(yàn)證、消息認(rèn)證、隨機(jī)數(shù)產(chǎn)生等。Sm3算法的運(yùn)行過程如下:1、使填充后的數(shù)據(jù)長度是512的整數(shù)倍。2、把填充后的信息按照512比特進(jìn)行分組。3、迭代壓縮得到最后的哈希值。
    推薦度:
    導(dǎo)讀java sm3加密是一種加密算法。Sm3算法是我國自己設(shè)計(jì)的哈希算法,作用主要是數(shù)字簽名及驗(yàn)證、消息認(rèn)證、隨機(jī)數(shù)產(chǎn)生等。Sm3算法的運(yùn)行過程如下:1、使填充后的數(shù)據(jù)長度是512的整數(shù)倍。2、把填充后的信息按照512比特進(jìn)行分組。3、迭代壓縮得到最后的哈希值。

    ? ?

    java sm3加密是什么?讓我們一起來了解一下吧!

    java sm3加密是一種加密算法。Sm3算法是我國自己設(shè)計(jì)的哈希算法,在商用密碼體系當(dāng)中,sm3算法的作用主要是數(shù)字簽名及驗(yàn)證、消息認(rèn)證、隨機(jī)數(shù)產(chǎn)生等。Sm3算法是公開的,進(jìn)行加密會(huì)產(chǎn)生一個(gè)32字節(jié)的值。

    Sm3算法的運(yùn)行過程如下:

    1.填充:使填充后的數(shù)據(jù)的長度是512的整數(shù)倍

    2.進(jìn)行分組:把填充后的信息按照512比特一個(gè)分組進(jìn)行分組。

    3.迭代壓縮得到最后的哈希值:如果信息分為N組,那么IV(N)就是最后得到的雜湊值。

    java中采用sm3算法加密代碼如下:

    public?class?SM3?{
    ?
    ????public?static?final?byte[]?iv?=?{?0x73,?(byte)?0x80,?0x16,?0x6f,?0x49,
    ????????????0x14,?(byte)?0xb2,?(byte)?0xb9,?0x17,?0x24,?0x42,?(byte)?0xd7,
    ????????????(byte)?0xda,?(byte)?0x8a,?0x06,?0x00,?(byte)?0xa9,?0x6f,?0x30,
    ????????????(byte)?0xbc,?(byte)?0x16,?0x31,?0x38,?(byte)?0xaa,?(byte)?0xe3,
    ????????????(byte)?0x8d,?(byte)?0xee,?0x4d,?(byte)?0xb0,?(byte)?0xfb,?0x0e,
    ????????????0x4e?};
    ?
    ????public?static?int[]?Tj?=?new?int[64];
    ?
    ????static
    ????{
    ????????for?(int?i?=?0;?i?=?0?&&?j?=?0?&&?j?<=?15)
    ????????{
    ????????????return?GG1j(X,?Y,?Z);
    ????????}
    ????????else
    ????????{
    ????????????return?GG2j(X,?Y,?Z);
    ????????}
    ????}
    ?
    ????//?邏輯位運(yùn)算函數(shù)
    ????private?static?int?FF1j(int?X,?int?Y,?int?Z)
    ????{
    ????????int?tmp?=?X?^?Y?^?Z;
    ????????return?tmp;
    ????}
    ?
    ????private?static?int?FF2j(int?X,?int?Y,?int?Z)
    ????{
    ????????int?tmp?=?((X?&?Y)?|?(X?&?Z)?|?(Y?&?Z));
    ????????return?tmp;
    ????}
    ?
    ????private?static?int?GG1j(int?X,?int?Y,?int?Z)
    ????{
    ????????int?tmp?=?X?^?Y?^?Z;
    ????????return?tmp;
    ????}
    ?
    ????private?static?int?GG2j(int?X,?int?Y,?int?Z)
    ????{
    ????????int?tmp?=?(X?&?Y)?|?(~X?&?Z);
    ????????return?tmp;
    ????}
    ?
    ????private?static?int?P0(int?X)
    ????{
    ????????int?y?=?rotateLeft(X,?9);
    ????????y?=?bitCycleLeft(X,?9);
    ????????int?z?=?rotateLeft(X,?17);
    ????????z?=?bitCycleLeft(X,?17);
    ????????int?t?=?X?^?y?^?z;
    ????????return?t;
    ????}
    ?
    ????private?static?int?P1(int?X)
    ????{
    ????????int?t?=?X?^?bitCycleLeft(X,?15)?^?bitCycleLeft(X,?23);
    ????????return?t;
    ????}
    ?
    ????/**
    ?????*?對最后一個(gè)分組字節(jié)數(shù)據(jù)padding
    ?????*
    ?????*?@param?in
    ?????*?@param?bLen
    ?????*????????????分組個(gè)數(shù)
    ?????*?@return
    ?????*/
    ????public?static?byte[]?padding(byte[]?in,?int?bLen)
    ????{
    ????????int?k?=?448?-?(8?*?in.length?+?1)?%?512;
    ????????if?(k?>?(32?-?n));
    ????}
    ?
    ????private?static?int?bitCycleLeft(int?n,?int?bitLen)
    ????{
    ????????bitLen?%=?32;
    ????????byte[]?tmp?=?bigEndianIntToByte(n);
    ????????int?byteLen?=?bitLen?/?8;
    ????????int?len?=?bitLen?%?8;
    ????????if?(byteLen?>?0)
    ????????{
    ????????????tmp?=?byteCycleLeft(tmp,?byteLen);
    ????????}
    ?
    ????????if?(len?>?0)
    ????????{
    ????????????tmp?=?bitSmall8CycleLeft(tmp,?len);
    ????????}
    ?
    ????????return?bigEndianByteToInt(tmp);
    ????}
    ?
    ????private?static?byte[]?bitSmall8CycleLeft(byte[]?in,?int?len)
    ????{
    ????????byte[]?tmp?=?new?byte[in.length];
    ????????int?t1,?t2,?t3;
    ????????for?(int?i?=?0;?i?>?(8?-?len));
    ????????????t3?=?(byte)?(t1?|?t2);
    ????????????tmp[i]?=?(byte)?t3;
    ????????}
    ?
    ????????return?tmp;
    ????}
    ?
    ????private?static?byte[]?byteCycleLeft(byte[]?in,?int?byteLen)
    ????{
    ????????byte[]?tmp?=?new?byte[in.length];
    ????????System.arraycopy(in,?byteLen,?tmp,?0,?in.length?-?byteLen);
    ????????System.arraycopy(in,?0,?tmp,?in.length?-?byteLen,?byteLen);
    ????????return?tmp;
    ????}
    ?
    ????/*private?static?void?print(int[]?arr)
    ????{
    ????????for?(int?i?=?0;?i?

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java sm3加密

    java sm3加密是一種加密算法。Sm3算法是我國自己設(shè)計(jì)的哈希算法,作用主要是數(shù)字簽名及驗(yàn)證、消息認(rèn)證、隨機(jī)數(shù)產(chǎn)生等。Sm3算法的運(yùn)行過程如下:1、使填充后的數(shù)據(jù)長度是512的整數(shù)倍。2、把填充后的信息按照512比特進(jìn)行分組。3、迭代壓縮得到最后的哈希值。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    文章千古事得失寸心知是誰的名句 誠信的名言名句 關(guān)于讀書的名言名句 生日的經(jīng)典名句 感恩老師的名言名句 關(guān)于時(shí)間的名言名句 活著的經(jīng)典名句 java snappy 杜甫的名句 java snapshot 孟浩然的名句 關(guān)于誠信的名言名句 杜甫的名言名句 杜甫的名句有哪些 杜甫的千古名句 范仲淹的名句 范仲淹的十大經(jīng)典名句 緬懷先烈的名言名句 堅(jiān)持的名言名句 屈原的名言名句 java sizeof java simpledateformat java simhash java shuffle java sha256加密 java portal java pojo java plugin java sftp java plug-in java settimeout java platform java setlayout java serialversionuid java serializable接口 java serializable java sequence java separator java semaphore java selenium
    Top 尤物国产精品福利三区| 国产麻豆一精品一AV一免费| 99精品热线在线观看免费视频| 精品无码成人久久久久久| 小辣椒福利视频精品导航| 久久久久亚洲精品无码网址 | 国产精品第13页| 亚洲精品亚洲人成人网| 国产精品亚洲一区二区三区| 国产成人精品亚洲日本在线| 国产成人久久精品激情| 日韩精品一二三四区| 久久综合鬼色88久久精品综合自在自线噜噜| 亚洲中文字幕久久精品无码喷水| 精品国产自在现线看| 亚洲精品影院久久久久久| 亚洲精品无码不卡在线播放HE| 少妇亚洲免费精品| 黑巨人与欧美精品一区| 老子午夜精品无码| 久久国产精品只做精品| 北岛玲在线精品视频| 久久久影院亚洲精品| 久久精品国产亚洲5555| 八区精品色欲人妻综合网| 亚洲精品国产av成拍色拍| 亚洲精品午夜久久久伊人| 久久久久久人妻一区精品| 综合人妻久久一区二区精品| 亚洲精品高清一二区久久| 国产精品自在在线午夜| 97久久精品人妻人人搡人人玩| 日韩精品久久无码人妻中文字幕| 亚洲精品狼友在线播放| 国产精品亚洲精品日韩已方| 无码日韩精品一区二区人妻| 国产在线91区精品| 国产精品久免费的黄网站| 国内精品视频一区二区三区| 久久久g0g0午夜无码精品| 国产午夜亚洲精品国产|