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

📄 aes.java

📁 a javacard software AES implementation
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
(short)0xbaba,(short)0xd56f,(short)0x7878,(short)0x88f0,(short)0x2525,(short)0x6f4a,(short)0x2e2e,(short)0x725c,
(short)0x1c1c,(short)0x2438,(short)0xa6a6,(short)0xf157,(short)0xb4b4,(short)0xc773,(short)0xc6c6,(short)0x5197,
(short)0xe8e8,(short)0x23cb,(short)0xdddd,(short)0x7ca1,(short)0x7474,(short)0x9ce8,(short)0x1f1f,(short)0x213e,
(short)0x4b4b,(short)0xdd96,(short)0xbdbd,(short)0xdc61,(short)0x8b8b,(short)0x860d,(short)0x8a8a,(short)0x850f,
(short)0x7070,(short)0x90e0,(short)0x3e3e,(short)0x427c,(short)0xb5b5,(short)0xc471,(short)0x6666,(short)0xaacc,
(short)0x4848,(short)0xd890,(short)0x0303,(short)0x0506,(short)0xf6f6,(short)0x01f7,(short)0x0e0e,(short)0x121c,
(short)0x6161,(short)0xa3c2,(short)0x3535,(short)0x5f6a,(short)0x5757,(short)0xf9ae,(short)0xb9b9,(short)0xd069,
(short)0x8686,(short)0x9117,(short)0xc1c1,(short)0x5899,(short)0x1d1d,(short)0x273a,(short)0x9e9e,(short)0xb927,
(short)0xe1e1,(short)0x38d9,(short)0xf8f8,(short)0x13eb,(short)0x9898,(short)0xb32b,(short)0x1111,(short)0x3322,
(short)0x6969,(short)0xbbd2,(short)0xd9d9,(short)0x70a9,(short)0x8e8e,(short)0x8907,(short)0x9494,(short)0xa733,
(short)0x9b9b,(short)0xb62d,(short)0x1e1e,(short)0x223c,(short)0x8787,(short)0x9215,(short)0xe9e9,(short)0x20c9,
(short)0xcece,(short)0x4987,(short)0x5555,(short)0xffaa,(short)0x2828,(short)0x7850,(short)0xdfdf,(short)0x7aa5,
(short)0x8c8c,(short)0x8f03,(short)0xa1a1,(short)0xf859,(short)0x8989,(short)0x8009,(short)0x0d0d,(short)0x171a,
(short)0xbfbf,(short)0xda65,(short)0xe6e6,(short)0x31d7,(short)0x4242,(short)0xc684,(short)0x6868,(short)0xb8d0,
(short)0x4141,(short)0xc382,(short)0x9999,(short)0xb029,(short)0x2d2d,(short)0x775a,(short)0x0f0f,(short)0x111e,
(short)0xb0b0,(short)0xcb7b,(short)0x5454,(short)0xfca8,(short)0xbbbb,(short)0xd66d,(short)0x1616,(short)0x3a2c};	

//private short[] alog = new short[256];
private final static short[] alog ={
(short)0x0001,(short)0x0003,(short)0x0005,(short)0x000f,(short)0x0011,(short)0x0033,(short)0x0055,(short)0x00ff,
(short)0x001a,(short)0x002e,(short)0x0072,(short)0x0096,(short)0x00a1,(short)0x00f8,(short)0x0013,(short)0x0035,
(short)0x005f,(short)0x00e1,(short)0x0038,(short)0x0048,(short)0x00d8,(short)0x0073,(short)0x0095,(short)0x00a4,
(short)0x00f7,(short)0x0002,(short)0x0006,(short)0x000a,(short)0x001e,(short)0x0022,(short)0x0066,(short)0x00aa,
(short)0x00e5,(short)0x0034,(short)0x005c,(short)0x00e4,(short)0x0037,(short)0x0059,(short)0x00eb,(short)0x0026,
(short)0x006a,(short)0x00be,(short)0x00d9,(short)0x0070,(short)0x0090,(short)0x00ab,(short)0x00e6,(short)0x0031,
(short)0x0053,(short)0x00f5,(short)0x0004,(short)0x000c,(short)0x0014,(short)0x003c,(short)0x0044,(short)0x00cc,
(short)0x004f,(short)0x00d1,(short)0x0068,(short)0x00b8,(short)0x00d3,(short)0x006e,(short)0x00b2,(short)0x00cd,
(short)0x004c,(short)0x00d4,(short)0x0067,(short)0x00a9,(short)0x00e0,(short)0x003b,(short)0x004d,(short)0x00d7,
(short)0x0062,(short)0x00a6,(short)0x00f1,(short)0x0008,(short)0x0018,(short)0x0028,(short)0x0078,(short)0x0088,
(short)0x0083,(short)0x009e,(short)0x00b9,(short)0x00d0,(short)0x006b,(short)0x00bd,(short)0x00dc,(short)0x007f,
(short)0x0081,(short)0x0098,(short)0x00b3,(short)0x00ce,(short)0x0049,(short)0x00db,(short)0x0076,(short)0x009a,
(short)0x00b5,(short)0x00c4,(short)0x0057,(short)0x00f9,(short)0x0010,(short)0x0030,(short)0x0050,(short)0x00f0,
(short)0x000b,(short)0x001d,(short)0x0027,(short)0x0069,(short)0x00bb,(short)0x00d6,(short)0x0061,(short)0x00a3,
(short)0x00fe,(short)0x0019,(short)0x002b,(short)0x007d,(short)0x0087,(short)0x0092,(short)0x00ad,(short)0x00ec,
(short)0x002f,(short)0x0071,(short)0x0093,(short)0x00ae,(short)0x00e9,(short)0x0020,(short)0x0060,(short)0x00a0,
(short)0x00fb,(short)0x0016,(short)0x003a,(short)0x004e,(short)0x00d2,(short)0x006d,(short)0x00b7,(short)0x00c2,
(short)0x005d,(short)0x00e7,(short)0x0032,(short)0x0056,(short)0x00fa,(short)0x0015,(short)0x003f,(short)0x0041,
(short)0x00c3,(short)0x005e,(short)0x00e2,(short)0x003d,(short)0x0047,(short)0x00c9,(short)0x0040,(short)0x00c0,
(short)0x005b,(short)0x00ed,(short)0x002c,(short)0x0074,(short)0x009c,(short)0x00bf,(short)0x00da,(short)0x0075,
(short)0x009f,(short)0x00ba,(short)0x00d5,(short)0x0064,(short)0x00ac,(short)0x00ef,(short)0x002a,(short)0x007e,
(short)0x0082,(short)0x009d,(short)0x00bc,(short)0x00df,(short)0x007a,(short)0x008e,(short)0x0089,(short)0x0080,
(short)0x009b,(short)0x00b6,(short)0x00c1,(short)0x0058,(short)0x00e8,(short)0x0023,(short)0x0065,(short)0x00af,
(short)0x00ea,(short)0x0025,(short)0x006f,(short)0x00b1,(short)0x00c8,(short)0x0043,(short)0x00c5,(short)0x0054,
(short)0x00fc,(short)0x001f,(short)0x0021,(short)0x0063,(short)0x00a5,(short)0x00f4,(short)0x0007,(short)0x0009,
(short)0x001b,(short)0x002d,(short)0x0077,(short)0x0099,(short)0x00b0,(short)0x00cb,(short)0x0046,(short)0x00ca,
(short)0x0045,(short)0x00cf,(short)0x004a,(short)0x00de,(short)0x0079,(short)0x008b,(short)0x0086,(short)0x0091,
(short)0x00a8,(short)0x00e3,(short)0x003e,(short)0x0042,(short)0x00c6,(short)0x0051,(short)0x00f3,(short)0x000e,
(short)0x0012,(short)0x0036,(short)0x005a,(short)0x00ee,(short)0x0029,(short)0x007b,(short)0x008d,(short)0x008c,
(short)0x008f,(short)0x008a,(short)0x0085,(short)0x0094,(short)0x00a7,(short)0x00f2,(short)0x000d,(short)0x0017,
(short)0x0039,(short)0x004b,(short)0x00dd,(short)0x007c,(short)0x0084,(short)0x0097,(short)0x00a2,(short)0x00fd,
(short)0x001c,(short)0x0024,(short)0x006c,(short)0x00b4,(short)0x00c7,(short)0x0052,(short)0x00f6,(short)0x0001};

//private short[] log =  new short[256];
private final static short[] log = {
(short)0x0000,(short)0x0000,(short)0x0019,(short)0x0001,(short)0x0032,(short)0x0002,(short)0x001a,(short)0x00c6,
(short)0x004b,(short)0x00c7,(short)0x001b,(short)0x0068,(short)0x0033,(short)0x00ee,(short)0x00df,(short)0x0003,
(short)0x0064,(short)0x0004,(short)0x00e0,(short)0x000e,(short)0x0034,(short)0x008d,(short)0x0081,(short)0x00ef,
(short)0x004c,(short)0x0071,(short)0x0008,(short)0x00c8,(short)0x00f8,(short)0x0069,(short)0x001c,(short)0x00c1,
(short)0x007d,(short)0x00c2,(short)0x001d,(short)0x00b5,(short)0x00f9,(short)0x00b9,(short)0x0027,(short)0x006a,
(short)0x004d,(short)0x00e4,(short)0x00a6,(short)0x0072,(short)0x009a,(short)0x00c9,(short)0x0009,(short)0x0078,
(short)0x0065,(short)0x002f,(short)0x008a,(short)0x0005,(short)0x0021,(short)0x000f,(short)0x00e1,(short)0x0024,
(short)0x0012,(short)0x00f0,(short)0x0082,(short)0x0045,(short)0x0035,(short)0x0093,(short)0x00da,(short)0x008e,
(short)0x0096,(short)0x008f,(short)0x00db,(short)0x00bd,(short)0x0036,(short)0x00d0,(short)0x00ce,(short)0x0094,
(short)0x0013,(short)0x005c,(short)0x00d2,(short)0x00f1,(short)0x0040,(short)0x0046,(short)0x0083,(short)0x0038,
(short)0x0066,(short)0x00dd,(short)0x00fd,(short)0x0030,(short)0x00bf,(short)0x0006,(short)0x008b,(short)0x0062,
(short)0x00b3,(short)0x0025,(short)0x00e2,(short)0x0098,(short)0x0022,(short)0x0088,(short)0x0091,(short)0x0010,
(short)0x007e,(short)0x006e,(short)0x0048,(short)0x00c3,(short)0x00a3,(short)0x00b6,(short)0x001e,(short)0x0042,
(short)0x003a,(short)0x006b,(short)0x0028,(short)0x0054,(short)0x00fa,(short)0x0085,(short)0x003d,(short)0x00ba,
(short)0x002b,(short)0x0079,(short)0x000a,(short)0x0015,(short)0x009b,(short)0x009f,(short)0x005e,(short)0x00ca,
(short)0x004e,(short)0x00d4,(short)0x00ac,(short)0x00e5,(short)0x00f3,(short)0x0073,(short)0x00a7,(short)0x0057,
(short)0x00af,(short)0x0058,(short)0x00a8,(short)0x0050,(short)0x00f4,(short)0x00ea,(short)0x00d6,(short)0x0074,
(short)0x004f,(short)0x00ae,(short)0x00e9,(short)0x00d5,(short)0x00e7,(short)0x00e6,(short)0x00ad,(short)0x00e8,
(short)0x002c,(short)0x00d7,(short)0x0075,(short)0x007a,(short)0x00eb,(short)0x0016,(short)0x000b,(short)0x00f5,
(short)0x0059,(short)0x00cb,(short)0x005f,(short)0x00b0,(short)0x009c,(short)0x00a9,(short)0x0051,(short)0x00a0,
(short)0x007f,(short)0x000c,(short)0x00f6,(short)0x006f,(short)0x0017,(short)0x00c4,(short)0x0049,(short)0x00ec,
(short)0x00d8,(short)0x0043,(short)0x001f,(short)0x002d,(short)0x00a4,(short)0x0076,(short)0x007b,(short)0x00b7,
(short)0x00cc,(short)0x00bb,(short)0x003e,(short)0x005a,(short)0x00fb,(short)0x0060,(short)0x00b1,(short)0x0086,
(short)0x003b,(short)0x0052,(short)0x00a1,(short)0x006c,(short)0x00aa,(short)0x0055,(short)0x0029,(short)0x009d,
(short)0x0097,(short)0x00b2,(short)0x0087,(short)0x0090,(short)0x0061,(short)0x00be,(short)0x00dc,(short)0x00fc,
(short)0x00bc,(short)0x0095,(short)0x00cf,(short)0x00cd,(short)0x0037,(short)0x003f,(short)0x005b,(short)0x00d1,
(short)0x0053,(short)0x0039,(short)0x0084,(short)0x003c,(short)0x0041,(short)0x00a2,(short)0x006d,(short)0x0047,
(short)0x0014,(short)0x002a,(short)0x009e,(short)0x005d,(short)0x0056,(short)0x00f2,(short)0x00d3,(short)0x00ab,
(short)0x0044,(short)0x0011,(short)0x0092,(short)0x00d9,(short)0x0023,(short)0x0020,(short)0x002e,(short)0x0089,
(short)0x00b4,(short)0x007c,(short)0x00b8,(short)0x0026,(short)0x0077,(short)0x0099,(short)0x00e3,(short)0x00a5,
(short)0x0067,(short)0x004a,(short)0x00ed,(short)0x00de,(short)0x00c5,(short)0x0031,(short)0x00fe,(short)0x0018,
(short)0x000d,(short)0x0063,(short)0x008c,(short)0x0080,(short)0x00c0,(short)0x00f7,(short)0x0070,(short)0x0007};

//=========================================================
	
// 3x4x2
    private final static short[] shifts =   new short[] {
      0, 0, 1, 3, 2, 2 , 3, 1 ,
      0, 0, 1, 5, 2, 4 , 3, 3 ,
      0, 0, 1, 7, 3, 5 , 4, 4 };

	private final static byte [] A = new byte[] {
        1, 1, 1, 1, 1, 0, 0, 0,
        0, 1, 1, 1, 1, 1, 0, 0,
        0, 0, 1, 1, 1, 1, 1, 0,
        0, 0, 0, 1, 1, 1, 1, 1,
        1, 0, 0, 0, 1, 1, 1, 1,
        1, 1, 0, 0, 0, 1, 1, 1,
        1, 1, 1, 0, 0, 0, 1, 1,
        1, 1, 1, 1, 0, 0, 0, 1 };
	
	private final static byte [] B = new byte[] { 0, 1, 1, 0, 0, 0, 1, 1 };
	private final static byte []G =  new byte[] { 2,1, 1, 3, 3, 2,1, 1, 1, 3, 2,1,1, 1, 3, 2};
    private final static byte []iG = new byte[] {14,9,13,11,11,14,9,13,13,11,14,9,9,13,11,14};
	
	// Arrays to calculate key for en/decryption
	//================================================
    private short[] K =  new short[(ROUNDS + 1)*BC*2];;
	private short[] tk = new short[KC2];
	//================================================

	// Array for AES computing
    private 	short[] a  ; // = new short[BC*2];
    private     short[] tmp; // = new short[BC*2];  // temporary work array
	public      byte [] Out; // = new byte[BLOCK_SIZE];
	
    public aes()
    { a   = JCSystem.makeTransientShortArray((short)(BC*2),JCSystem.CLEAR_ON_DESELECT);
	  tmp = JCSystem.makeTransientShortArray((short)(BC*2),JCSystem.CLEAR_ON_DESELECT);
      Out = JCSystem.makeTransientByteArray((short)(BLOCK_SIZE),JCSystem.CLEAR_ON_DESELECT);
    } 	
  /// Multiply two elements of GF(2^m).
  private short mul( short a, short b )
  {
    return ( a != (short)0 && b != (short)0 ) ?
        (short)(alog[(short)( log[a & (short)0xFF] + log[b & (short)0xFF] ) % (short)255]) : (short)0;
  }

  private short mul4( short a, byte b0, byte b1 )
  { short i,j,t,r;
	
    if ( a == 0 )
      return 0;
    a = log[(short)(a & (short)0xFF)];
    i = ( b0 != (short)0 ) ?
        (short)(alog[(short)( a + log[b0 & (short)0xFF] ) % (short)255] & (short)0xFF) : (short)0;
    j = ( b1 != (short)0 ) ?
        (short)(alog[(short)( a + log[b1 & (short)0xFF] ) % (short)255] & (short)0xFF) : (short)0;
    return (short)(i << 8 | j);
  }


  //  initializer - to intialise S-boxes and T-boxes
  
   
  
  /// Set the key.
 public void setKey( byte[] key,short off,byte mode )
  { short i,j,r,s,t,k ; 
    short tth, ttl;
	 
	  // ROUNDS = getRounds( KEY_SIZE, BLOCK_SIZE );
    

    //if ( key.length != KEY_SIZE )

⌨️ 快捷键说明

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