📄 aes.java
字号:
package crypto_aes ;
import javacard.framework.*;
public class aes
{
// Key size in bytes. Valid values are 16, 24, and 32.
private final static short KEY_SIZE=(short)16;
// Block size in bytes. Valid values are 16, 24, and 32.
private final short ROUNDS = (short)10 ;
private final short BLOCK_SIZE = 16;
private final short BC=BLOCK_SIZE / 4;
private final short ROUND_KEY_COUNT = (short)(( ROUNDS + 1 ) * BC);
private final short KC = (short)(KEY_SIZE >> 2);
private final short KC2 = (short)(KEY_SIZE >> 1);
private final short SC = (short)0;
// ( BC == 4 ? (short)0 : ( BC == 6 ? (short)1 : (short)2 ) );
//private byte[] S = new byte[256];
//private byte[] Si = new byte[256];
private final static byte[] S = {
99,124,119,123,-14,107,111,-59,48,1,103,43,-2,-41,-85,118,
-54,-126,-55,125,-6,89,71,-16,-83,-44,-94,-81,-100,-92,114,-64,
-73,-3,-109,38,54,63,-9,-52,52,-91,-27,-15,113,-40,49,21,
4,-57,35,-61,24,-106,5,-102,7,18,-128,-30,-21,39,-78,117,
9,-125,44,26,27,110,90,-96,82,59,-42,-77,41,-29,47,-124,
83,-47,0,-19,32,-4,-79,91,106,-53,-66,57,74,76,88,-49,
-48,-17,-86,-5,67,77,51,-123,69,-7,2,127,80,60,-97,-88,
81,-93,64,-113,-110,-99,56,-11,-68,-74,-38,33,16,-1,-13,-46,
-51,12,19,-20,95,-105,68,23,-60,-89,126,61,100,93,25,115,
96,-127,79,-36,34,42,-112,-120,70,-18,-72,20,-34,94,11,-37,
-32,50,58,10,73,6,36,92,-62,-45,-84,98,-111,-107,-28,121,
-25,-56,55,109,-115,-43,78,-87,108,86,-12,-22,101,122,-82,8,
-70,120,37,46,28,-90,-76,-58,-24,-35,116,31,75,-67,-117,-118,
112,62,-75,102,72,3,-10,14,97,53,87,-71,-122,-63,29,-98,
-31,-8,-104,17,105,-39,-114,-108,-101,30,-121,-23,-50,85,40,-33,
-116,-95,-119,13,-65,-26,66,104,65,-103,45,15,-80,84,-69,22
};
private final static byte[] Si = {
82,9,106,-43,48,54,-91,56,-65,64,-93,-98,-127,-13,-41,-5,
124,-29,57,-126,-101,47,-1,-121,52,-114,67,68,-60,-34,-23,-53,
84,123,-108,50,-90,-62,35,61,-18,76,-107,11,66,-6,-61,78,
8,46,-95,102,40,-39,36,-78,118,91,-94,73,109,-117,-47,37,
114,-8,-10,100,-122,104,-104,22,-44,-92,92,-52,93,101,-74,-110,
108,112,72,80,-3,-19,-71,-38,94,21,70,87,-89,-115,-99,-124,
-112,-40,-85,0,-116,-68,-45,10,-9,-28,88,5,-72,-77,69,6,
-48,44,30,-113,-54,63,15,2,-63,-81,-67,3,1,19,-118,107,
58,-111,17,65,79,103,-36,-22,-105,-14,-49,-50,-16,-76,-26,115,
-106,-84,116,34,-25,-83,53,-123,-30,-7,55,-24,28,117,-33,110,
71,-15,26,113,29,41,-59,-119,111,-73,98,14,-86,24,-66,27,
-4,86,62,75,-58,-46,121,32,-102,-37,-64,-2,120,-51,90,-12,
31,-35,-88,51,-120,7,-57,49,-79,18,16,89,39,-128,-20,95,
96,81,127,-87,25,-75,74,13,45,-27,122,-97,-109,-55,-100,-17,
-96,-32,59,77,-82,42,-11,-80,-56,-21,-69,60,-125,83,-103,97,
23,43,4,126,-70,119,-42,38,-31,105,20,99,85,33,12,125
};
// Constants, variables, and auxillary routines.
//================================================
//private byte[] rcon = new byte[30];
private final static byte[] rcon = {
(byte)0x01,(byte)0x02,(byte)0x04,(byte)0x08,(byte)0x10,(byte)0x20,(byte)0x40,(byte)0x80,
(byte)0x1b,(byte)0x36,(byte)0x6c,(byte)0xd8,(byte)0xab,(byte)0x4d,(byte)0x9a,(byte)0x2f,
(byte)0x5e,(byte)0xbc,(byte)0x63,(byte)0xc6,(byte)0x97,(byte)0x35,(byte)0x6a,(byte)0xd4,
(byte)0xb3,(byte)0x7d,(byte)0xfa,(byte)0xef,(byte)0xc5,(byte)0x91};
//private short[] box= new short[1024];
private final static short[] box= {
(short)0xc663,(short)0x63a5,(short)0xf87c,(short)0x7c84,(short)0xee77,(short)0x7799,(short)0xf67b,(short)0x7b8d,
(short)0xfff2,(short)0xf20d,(short)0xd66b,(short)0x6bbd,(short)0xde6f,(short)0x6fb1,(short)0x91c5,(short)0xc554,
(short)0x6030,(short)0x3050,(short)0x0201,(short)0x0103,(short)0xce67,(short)0x67a9,(short)0x562b,(short)0x2b7d,
(short)0xe7fe,(short)0xfe19,(short)0xb5d7,(short)0xd762,(short)0x4dab,(short)0xabe6,(short)0xec76,(short)0x769a,
(short)0x8fca,(short)0xca45,(short)0x1f82,(short)0x829d,(short)0x89c9,(short)0xc940,(short)0xfa7d,(short)0x7d87,
(short)0xeffa,(short)0xfa15,(short)0xb259,(short)0x59eb,(short)0x8e47,(short)0x47c9,(short)0xfbf0,(short)0xf00b,
(short)0x41ad,(short)0xadec,(short)0xb3d4,(short)0xd467,(short)0x5fa2,(short)0xa2fd,(short)0x45af,(short)0xafea,
(short)0x239c,(short)0x9cbf,(short)0x53a4,(short)0xa4f7,(short)0xe472,(short)0x7296,(short)0x9bc0,(short)0xc05b,
(short)0x75b7,(short)0xb7c2,(short)0xe1fd,(short)0xfd1c,(short)0x3d93,(short)0x93ae,(short)0x4c26,(short)0x266a,
(short)0x6c36,(short)0x365a,(short)0x7e3f,(short)0x3f41,(short)0xf5f7,(short)0xf702,(short)0x83cc,(short)0xcc4f,
(short)0x6834,(short)0x345c,(short)0x51a5,(short)0xa5f4,(short)0xd1e5,(short)0xe534,(short)0xf9f1,(short)0xf108,
(short)0xe271,(short)0x7193,(short)0xabd8,(short)0xd873,(short)0x6231,(short)0x3153,(short)0x2a15,(short)0x153f,
(short)0x0804,(short)0x040c,(short)0x95c7,(short)0xc752,(short)0x4623,(short)0x2365,(short)0x9dc3,(short)0xc35e,
(short)0x3018,(short)0x1828,(short)0x3796,(short)0x96a1,(short)0x0a05,(short)0x050f,(short)0x2f9a,(short)0x9ab5,
(short)0x0e07,(short)0x0709,(short)0x2412,(short)0x1236,(short)0x1b80,(short)0x809b,(short)0xdfe2,(short)0xe23d,
(short)0xcdeb,(short)0xeb26,(short)0x4e27,(short)0x2769,(short)0x7fb2,(short)0xb2cd,(short)0xea75,(short)0x759f,
(short)0x1209,(short)0x091b,(short)0x1d83,(short)0x839e,(short)0x582c,(short)0x2c74,(short)0x341a,(short)0x1a2e,
(short)0x361b,(short)0x1b2d,(short)0xdc6e,(short)0x6eb2,(short)0xb45a,(short)0x5aee,(short)0x5ba0,(short)0xa0fb,
(short)0xa452,(short)0x52f6,(short)0x763b,(short)0x3b4d,(short)0xb7d6,(short)0xd661,(short)0x7db3,(short)0xb3ce,
(short)0x5229,(short)0x297b,(short)0xdde3,(short)0xe33e,(short)0x5e2f,(short)0x2f71,(short)0x1384,(short)0x8497,
(short)0xa653,(short)0x53f5,(short)0xb9d1,(short)0xd168,(short)0x0000,(short)0x0000,(short)0xc1ed,(short)0xed2c,
(short)0x4020,(short)0x2060,(short)0xe3fc,(short)0xfc1f,(short)0x79b1,(short)0xb1c8,(short)0xb65b,(short)0x5bed,
(short)0xd46a,(short)0x6abe,(short)0x8dcb,(short)0xcb46,(short)0x67be,(short)0xbed9,(short)0x7239,(short)0x394b,
(short)0x944a,(short)0x4ade,(short)0x984c,(short)0x4cd4,(short)0xb058,(short)0x58e8,(short)0x85cf,(short)0xcf4a,
(short)0xbbd0,(short)0xd06b,(short)0xc5ef,(short)0xef2a,(short)0x4faa,(short)0xaae5,(short)0xedfb,(short)0xfb16,
(short)0x8643,(short)0x43c5,(short)0x9a4d,(short)0x4dd7,(short)0x6633,(short)0x3355,(short)0x1185,(short)0x8594,
(short)0x8a45,(short)0x45cf,(short)0xe9f9,(short)0xf910,(short)0x0402,(short)0x0206,(short)0xfe7f,(short)0x7f81,
(short)0xa050,(short)0x50f0,(short)0x783c,(short)0x3c44,(short)0x259f,(short)0x9fba,(short)0x4ba8,(short)0xa8e3,
(short)0xa251,(short)0x51f3,(short)0x5da3,(short)0xa3fe,(short)0x8040,(short)0x40c0,(short)0x058f,(short)0x8f8a,
(short)0x3f92,(short)0x92ad,(short)0x219d,(short)0x9dbc,(short)0x7038,(short)0x3848,(short)0xf1f5,(short)0xf504,
(short)0x63bc,(short)0xbcdf,(short)0x77b6,(short)0xb6c1,(short)0xafda,(short)0xda75,(short)0x4221,(short)0x2163,
(short)0x2010,(short)0x1030,(short)0xe5ff,(short)0xff1a,(short)0xfdf3,(short)0xf30e,(short)0xbfd2,(short)0xd26d,
(short)0x81cd,(short)0xcd4c,(short)0x180c,(short)0x0c14,(short)0x2613,(short)0x1335,(short)0xc3ec,(short)0xec2f,
(short)0xbe5f,(short)0x5fe1,(short)0x3597,(short)0x97a2,(short)0x8844,(short)0x44cc,(short)0x2e17,(short)0x1739,
(short)0x93c4,(short)0xc457,(short)0x55a7,(short)0xa7f2,(short)0xfc7e,(short)0x7e82,(short)0x7a3d,(short)0x3d47,
(short)0xc864,(short)0x64ac,(short)0xba5d,(short)0x5de7,(short)0x3219,(short)0x192b,(short)0xe673,(short)0x7395,
(short)0xc060,(short)0x60a0,(short)0x1981,(short)0x8198,(short)0x9e4f,(short)0x4fd1,(short)0xa3dc,(short)0xdc7f,
(short)0x4422,(short)0x2266,(short)0x542a,(short)0x2a7e,(short)0x3b90,(short)0x90ab,(short)0x0b88,(short)0x8883,
(short)0x8c46,(short)0x46ca,(short)0xc7ee,(short)0xee29,(short)0x6bb8,(short)0xb8d3,(short)0x2814,(short)0x143c,
(short)0xa7de,(short)0xde79,(short)0xbc5e,(short)0x5ee2,(short)0x160b,(short)0x0b1d,(short)0xaddb,(short)0xdb76,
(short)0xdbe0,(short)0xe03b,(short)0x6432,(short)0x3256,(short)0x743a,(short)0x3a4e,(short)0x140a,(short)0x0a1e,
(short)0x9249,(short)0x49db,(short)0x0c06,(short)0x060a,(short)0x4824,(short)0x246c,(short)0xb85c,(short)0x5ce4,
(short)0x9fc2,(short)0xc25d,(short)0xbdd3,(short)0xd36e,(short)0x43ac,(short)0xacef,(short)0xc462,(short)0x62a6,
(short)0x3991,(short)0x91a8,(short)0x3195,(short)0x95a4,(short)0xd3e4,(short)0xe437,(short)0xf279,(short)0x798b,
(short)0xd5e7,(short)0xe732,(short)0x8bc8,(short)0xc843,(short)0x6e37,(short)0x3759,(short)0xda6d,(short)0x6db7,
(short)0x018d,(short)0x8d8c,(short)0xb1d5,(short)0xd564,(short)0x9c4e,(short)0x4ed2,(short)0x49a9,(short)0xa9e0,
(short)0xd86c,(short)0x6cb4,(short)0xac56,(short)0x56fa,(short)0xf3f4,(short)0xf407,(short)0xcfea,(short)0xea25,
(short)0xca65,(short)0x65af,(short)0xf47a,(short)0x7a8e,(short)0x47ae,(short)0xaee9,(short)0x1008,(short)0x0818,
(short)0x6fba,(short)0xbad5,(short)0xf078,(short)0x7888,(short)0x4a25,(short)0x256f,(short)0x5c2e,(short)0x2e72,
(short)0x381c,(short)0x1c24,(short)0x57a6,(short)0xa6f1,(short)0x73b4,(short)0xb4c7,(short)0x97c6,(short)0xc651,
(short)0xcbe8,(short)0xe823,(short)0xa1dd,(short)0xdd7c,(short)0xe874,(short)0x749c,(short)0x3e1f,(short)0x1f21,
(short)0x964b,(short)0x4bdd,(short)0x61bd,(short)0xbddc,(short)0x0d8b,(short)0x8b86,(short)0x0f8a,(short)0x8a85,
(short)0xe070,(short)0x7090,(short)0x7c3e,(short)0x3e42,(short)0x71b5,(short)0xb5c4,(short)0xcc66,(short)0x66aa,
(short)0x9048,(short)0x48d8,(short)0x0603,(short)0x0305,(short)0xf7f6,(short)0xf601,(short)0x1c0e,(short)0x0e12,
(short)0xc261,(short)0x61a3,(short)0x6a35,(short)0x355f,(short)0xae57,(short)0x57f9,(short)0x69b9,(short)0xb9d0,
(short)0x1786,(short)0x8691,(short)0x99c1,(short)0xc158,(short)0x3a1d,(short)0x1d27,(short)0x279e,(short)0x9eb9,
(short)0xd9e1,(short)0xe138,(short)0xebf8,(short)0xf813,(short)0x2b98,(short)0x98b3,(short)0x2211,(short)0x1133,
(short)0xd269,(short)0x69bb,(short)0xa9d9,(short)0xd970,(short)0x078e,(short)0x8e89,(short)0x3394,(short)0x94a7,
(short)0x2d9b,(short)0x9bb6,(short)0x3c1e,(short)0x1e22,(short)0x1587,(short)0x8792,(short)0xc9e9,(short)0xe920,
(short)0x87ce,(short)0xce49,(short)0xaa55,(short)0x55ff,(short)0x5028,(short)0x2878,(short)0xa5df,(short)0xdf7a,
(short)0x038c,(short)0x8c8f,(short)0x59a1,(short)0xa1f8,(short)0x0989,(short)0x8980,(short)0x1a0d,(short)0x0d17,
(short)0x65bf,(short)0xbfda,(short)0xd7e6,(short)0xe631,(short)0x8442,(short)0x42c6,(short)0xd068,(short)0x68b8,
(short)0x8241,(short)0x41c3,(short)0x2999,(short)0x99b0,(short)0x5a2d,(short)0x2d77,(short)0x1e0f,(short)0x0f11,
(short)0x7bb0,(short)0xb0cb,(short)0xa854,(short)0x54fc,(short)0x6dbb,(short)0xbbd6,(short)0x2c16,(short)0x163a,
(short)0xa5c6,(short)0x6363,(short)0x84f8,(short)0x7c7c,(short)0x99ee,(short)0x7777,(short)0x8df6,(short)0x7b7b,
(short)0x0dff,(short)0xf2f2,(short)0xbdd6,(short)0x6b6b,(short)0xb1de,(short)0x6f6f,(short)0x5491,(short)0xc5c5,
(short)0x5060,(short)0x3030,(short)0x0302,(short)0x0101,(short)0xa9ce,(short)0x6767,(short)0x7d56,(short)0x2b2b,
(short)0x19e7,(short)0xfefe,(short)0x62b5,(short)0xd7d7,(short)0xe64d,(short)0xabab,(short)0x9aec,(short)0x7676,
(short)0x458f,(short)0xcaca,(short)0x9d1f,(short)0x8282,(short)0x4089,(short)0xc9c9,(short)0x87fa,(short)0x7d7d,
(short)0x15ef,(short)0xfafa,(short)0xebb2,(short)0x5959,(short)0xc98e,(short)0x4747,(short)0x0bfb,(short)0xf0f0,
(short)0xec41,(short)0xadad,(short)0x67b3,(short)0xd4d4,(short)0xfd5f,(short)0xa2a2,(short)0xea45,(short)0xafaf,
(short)0xbf23,(short)0x9c9c,(short)0xf753,(short)0xa4a4,(short)0x96e4,(short)0x7272,(short)0x5b9b,(short)0xc0c0,
(short)0xc275,(short)0xb7b7,(short)0x1ce1,(short)0xfdfd,(short)0xae3d,(short)0x9393,(short)0x6a4c,(short)0x2626,
(short)0x5a6c,(short)0x3636,(short)0x417e,(short)0x3f3f,(short)0x02f5,(short)0xf7f7,(short)0x4f83,(short)0xcccc,
(short)0x5c68,(short)0x3434,(short)0xf451,(short)0xa5a5,(short)0x34d1,(short)0xe5e5,(short)0x08f9,(short)0xf1f1,
(short)0x93e2,(short)0x7171,(short)0x73ab,(short)0xd8d8,(short)0x5362,(short)0x3131,(short)0x3f2a,(short)0x1515,
(short)0x0c08,(short)0x0404,(short)0x5295,(short)0xc7c7,(short)0x6546,(short)0x2323,(short)0x5e9d,(short)0xc3c3,
(short)0x2830,(short)0x1818,(short)0xa137,(short)0x9696,(short)0x0f0a,(short)0x0505,(short)0xb52f,(short)0x9a9a,
(short)0x090e,(short)0x0707,(short)0x3624,(short)0x1212,(short)0x9b1b,(short)0x8080,(short)0x3ddf,(short)0xe2e2,
(short)0x26cd,(short)0xebeb,(short)0x694e,(short)0x2727,(short)0xcd7f,(short)0xb2b2,(short)0x9fea,(short)0x7575,
(short)0x1b12,(short)0x0909,(short)0x9e1d,(short)0x8383,(short)0x7458,(short)0x2c2c,(short)0x2e34,(short)0x1a1a,
(short)0x2d36,(short)0x1b1b,(short)0xb2dc,(short)0x6e6e,(short)0xeeb4,(short)0x5a5a,(short)0xfb5b,(short)0xa0a0,
(short)0xf6a4,(short)0x5252,(short)0x4d76,(short)0x3b3b,(short)0x61b7,(short)0xd6d6,(short)0xce7d,(short)0xb3b3,
(short)0x7b52,(short)0x2929,(short)0x3edd,(short)0xe3e3,(short)0x715e,(short)0x2f2f,(short)0x9713,(short)0x8484,
(short)0xf5a6,(short)0x5353,(short)0x68b9,(short)0xd1d1,(short)0x0000,(short)0x0000,(short)0x2cc1,(short)0xeded,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -