日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编程实现有关SMS4的2个程序之——编程实现线性变换模块

發布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程实现有关SMS4的2个程序之——编程实现线性变换模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*** @author 康雨城 北京大學軟件與微電子學院* @time 2017/11/22*/import java.util.Scanner;public class Main {//定義輸入字的長度,根據題意,長度為8,也就是用8個16進制的數來表示一個字public static int WORD_STRING_LENGTH=8;//一個字占32bit,用32位二進制數來表示public static int BIT_LIST_LENGTH=4*WORD_STRING_LENGTH;//定義二進制與十進制對應的數組public static String[] list={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};public static void main(String[] args) {Scanner input =new Scanner(System.in);//String str=input.next();//獲取輸入的字String str1="1a2b3c4d";String result1=getResult(str1);System.out.println("輸入 "+str1+" 的線性變換結果為 "+result1);String str2="c1000000";String result2=getResult(str2);System.out.println("輸入 "+str2+" 的線性變換結果為 "+result2);String str3="80000000";String result3=getResult(str3);System.out.println("輸入 "+str3+" 的線性變換結果為 "+result3);} /* 該方法實現線性變換模塊。要求:用戶輸入一個用16進制表示的數字(例如 1a2b3c4d) 程序輸出相應的用16進制表示的字*/private static String getResult(String str){int[] B=new int[BIT_LIST_LENGTH];//用于存儲輸入字轉為二進制的數int[] LB=new int[BIT_LIST_LENGTH];//用于存儲得到的二進制結果String LB_16="";//用于存儲得到的十六進制結果//進行一次循環,將輸入的十六進制的數轉化為二進制的數for(int i=0;i<WORD_STRING_LENGTH;i++){int k=Integer.valueOf(str.substring(i,i+1),16);for(int j=0;j<4;j++){B[4*i+j]=list[k].charAt(j)-48;}}//進行線性變換操作for(int p=0;p<BIT_LIST_LENGTH;p++){LB[p]=B[p]^B[(p+BIT_LIST_LENGTH-2)%BIT_LIST_LENGTH]^B[(p+BIT_LIST_LENGTH-10)%BIT_LIST_LENGTH]^B[(p+BIT_LIST_LENGTH-18)%BIT_LIST_LENGTH]^B[(p+BIT_LIST_LENGTH-24)%BIT_LIST_LENGTH];}//將二進制的數轉換為十六進制的數for(int x=0;x<WORD_STRING_LENGTH;x++){String temp="";for(int y=0;y<4;y++){temp+=LB[x*4+y];}LB_16+=Integer.toHexString(Integer.parseInt(temp, 2));}return LB_16;} }


總結

以上是生活随笔為你收集整理的编程实现有关SMS4的2个程序之——编程实现线性变换模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。