<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 国产精品久久新婚兰兰| 日韩精品在线免费观看| 精品蜜臀久久久久99网站| 久久精品国产黑森林| 欧洲精品码一区二区三区| 91精品无码久久久久久五月天| 999成人精品视频在线| 国产伦精品一区三区视频| 精品国产日韩久久亚洲| 99热在线只有精品| 一本色道久久综合亚洲精品| 日韩精品一区二区三区影院| 国产精品亚洲专区无码WEB| 亚洲精品自拍视频| 久久精品国产精品| 日韩人妻无码精品系列| 国产尤物在线视精品在亚洲| 亚洲精品无码av片| 精品国产乱子伦一区二区三区| 久久久国产精品一区二区18禁| 久热精品视频第一页| 免费视频成人国产精品网站 | 精品一区二区三区波多野结衣| 99精品视频在线观看re| 国产精品五月天强力打造| 免费视频成人国产精品网站| 国产福利专区精品视频| 精品久久亚洲一级α| 国产va精品免费观看| 亚洲乱码一区二区三区国产精品| 久久夜色精品国产网站| 久久亚洲AV午夜福利精品一区| 国产亚洲精品久久久久秋霞| 久久精品成人免费国产片小草| caoporn国产精品免费| 四虎一影院区永久精品| 国产亚洲精品美女久久久久久下载| 日本精品久久久久久福利| 热re久久精品国产99热| 精品国产AV无码一区二区三区| 国产精品麻豆成人AV网|