⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des.java

📁 des算法的java实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                                                      m_MEWEN=m_MEWEN+" ";
	                                          }
            
       
                                        }
                                    else if(sh=='D'){
                                        m_YUANWEN="";
		                          for(i=0;i<m_MINGWEN.length();i++)
	                                   {
                                              ch=t1[i*8+1];
                                              for(j=2;j<=8;j++)
                                              ch=ch*2+t1[i*8+j];
        
                                              m_YUANWEN=m_YUANWEN+(char)ch;
                                            ch=0;
                                      	}
                     
                                     }
           }

     
           public static void initial()//throws IOException
                {
                     int m[]=new int[65];
                     int m1[]=new int[65];
                     int k1[]=new int[65];
                     int i,j,k;
                     int k0[]=new int[57];
                     int C0[]=new int[57];
                     int C[][]=new int[17][29];
	              int D[][]=new int[17][29];
              
                     int ip[]={58,50,42,34,26,18,10,2,
	                        60,52,44,36,28,20,12,4,
	                        62,54,46,38,30,22,14,6,
	                        64,56,48,40,32,24,16,8,
	                        57,49,41,33,25,17,9,1,
	                        59,51,43,35,27,19,11,3,
     	                        61,53,45,37,29,21,13,5,
	                        63,55,47,39,31,23,15,7}; 
             	        int PC_1[]={57,49,41,33,25,17,9,
	                           1,58,50,42,34,26,18,
	                           10,2,59,51,43,35,27,
	                           19,11,3,60,52,44,36,
	                           63,55,47,39,31,23,15,
	                           7,62,54,46,38,30,22,
	                           14,6,61,53,45,37,29,
	                           21,13,5,28,20,12,4};
	               int PC_2[]={14,17,11,24,1,5,
                                  3,28,15,6,21,10,
	                           23,19,12,4,26,8,
	                           16,7,27,20,13,2,
	                           41,52,31,37,47,55,
	                           30,40,51,45,33,48,
	                           44,49,39,56,34,53,
	                           46,42,50,36,29,32};
                      char ch;
                      int[] str=new int[8];
                      for(i=0;i<m_MIYAO.length();i++)
	                      {
	                         ch=m_MIYAO.charAt(i);
                                int s=(int)ch;

	                           for(j=0;j<8;j++){
                                    str[j]=s%2;
		                      s=s/2;
	                           }
	                           for(j=7;j>=0;j--)
                                          k1[i*8+8-j]=str[j];
                               }
                       for(i=0;i<m_MINGWEN.length();i++){
	                        ch=m_MINGWEN.charAt(i);
                               int s=(int)ch;

	                        for(j=0;j<8;j++){
                                     str[j]=s%2;
		                       s=s/2;
	                         }
	                        for(j=7;j>=0;j--)
                                  m[i*8+8-j]=str[j];
              	   }
                  
        
                        for(i=1;i<=64;i++)
                             m1[i]=m[ip[i-1]];
                        for(i=1;i<33;i++)
                           L0[i]=m1[i];//明文左侧的初始化
                  
  	                 for(i=33;i<=64;i++)
                            R0[i-32]=m1[i];//明文右侧的初始化
 	

                        for(i=1;i<57;i++)//生成子密钥
	                       k0[i]=k1[PC_1[i-1]];
                        for(i=1;i<29;i++)
	                          C[0][i]=k0[i];
	                 for(i=29;i<=56;i++)
	                          D[0][i-28]=k0[i];
                        for(k=0;k<16;k++) {
                                if(k==0||k==1||k==8||k==15){
                                      for(i=1;i<28;i++)//循环左移一位
	                                    {
	                                    	C[k+1][i]=C[k][i+1];
		                                   D[k+1][i]=D[k][i+1];
	                                 }
	                                C[k+1][28]=C[k][1];
	                                D[k+1][28]=D[k][1];
	               
                                  }
                                 else   {
                                       for(i=1;i<27;i++)//循环左移两位
	                                     {
		                                  C[k+1][i]=C[k][i+2];
		                                  D[k+1][i]=D[k][i+2];
                                       } 
	                                C[k+1][27]=C[k][1];
	                                D[k+1][27]=D[k][1];
	                                C[k+1][28]=C[k][2];
	                                D[k+1][28]=D[k][2];
                                  }
	                           for(i=1;i<=28;i++)
	                               {
	                                    C0[i]=C[k+1][i];
	                                    C0[i+28]=D[k+1][i];
	                            }
                        
	                           for(i=1;i<=48;i++)
                            		K[k+1][i]=C0[PC_2[i-1]];//生成子密钥k1
           	 
                       }
           }

           public static void main(String[]args)throws IOException
                      {   String s;
                          String s1="";
                          int len,i,j;
                          Des des=new Des();
                          if(args.length<2)
                              System.out.println("please input mingwen and miyao");
                          else{

                          BufferedReader in
                                  = new BufferedReader(new InputStreamReader(new BufferedInputStream(
                                       new FileInputStream(args[0]))));
 
                         while((s=in.readLine())!=null)
                                 { 
                               s1=s1+s;s1=s1+'\r';s1=s1+'\n';}
                         in.close();
                         des.m_MIYAO=args[1];
                          DataOutputStream out1=
                                 new DataOutputStream(
                                      new BufferedOutputStream(
                                           new FileOutputStream("yuanwen.txt")));    
                         DataOutputStream out=
                                  new DataOutputStream(
                                       new BufferedOutputStream(
                                            new FileOutputStream("mewen.txt")));      

     
                         len=s1.length()/8;
                          if(len!=0)
                            for(i=0;i<len;i++)
                                { 
              
                                   des.m_MINGWEN=s1.substring(i*8,i*8+8);
                                   des.initial();
                                   des.des('E');
                                   out.writeBytes(m_MEWEN);
                                   des.des('D');
                                   out1.writeBytes(m_YUANWEN);
                                 }
                            if(s1.length()!=len*8){
                                 des.m_MINGWEN=s1.substring(len*8,s1.length());
             
                                 des.initial();
                                 des.des('E');
                                 out.writeBytes(m_MEWEN);
                                 des.des('D');
                                 out1.writeBytes(m_YUANWEN);
                             }
                             out.close(); 
                             out1.close(); 
                
                 }
           }

}

             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -