<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 国产精品亚洲专区无码牛牛| 在线观看自拍少妇精品| 亚洲欧洲精品在线| 91在线视频精品| 国产在视频线在精品| 国产精品电影一区| 99这里只有精品66视频| 99re这里只有精品6| 亚洲国产成人精品无码久久久久久综合 | 国产精品午夜爆乳美女视频| 精品国产品国语在线不卡| 青草青草久热精品视频在线网站| 国产精品午夜久久| 精品一区二区三区四区电影| 国产欧美精品123区发布| 国产精品久久免费| 亚洲美女精品视频| 蜜国产精品jk白丝AV网站| 国产精品无码a∨精品| 久久精品免费大片国产大片| 少妇亚洲免费精品| 国产精品亚洲综合网站| 午夜精品在线免费观看| 亚洲色在线无码国产精品不卡| 777精品成人影院| 国产成人精品男人的天堂538 | 91精品国产综合久| 久久亚洲AV无码精品色午夜麻| 国产午夜精品理论片久久影视| 中文无码精品一区二区三区| 伊人精品视频一区二区三区| 成人无码精品1区2区3区免费看| 国产精品成人久久久久三级午夜电影 | 2022国产精品自产拍在线观看 | 国产精品国产三级国产av剧情| 久久精品青草社区| 精品亚洲成a人在线观看| 热re久久精品国产99热| 国产揄拍国内精品对白| yy6080久久亚洲精品| 国产精品主播一区二区|