tiger.java

来自「linux下建立JAVA虚拟机的源码KAFFE」· Java 代码 · 共 944 行 · 第 1/4 页

JAVA
944
字号
                                    0x528EF88AB6AC0A0DL, 0xA09EA253597BE3FFL,                                    0x430DDFB3AC48CD56L, 0xC4B3A67AF45CE46FL,                                    0x4ECECFD8FBE2D05EL, 0x3EF56F10B39935F0L,                                    0x0B22D6829CD619C6L, 0x17FD460A74DF2069L,                                    0x6CF8CC8E8510ED40L, 0xD6C824BF3A6ECAA7L,                                    0x61243D581A817049L, 0x048BACB6BBC163A2L,                                    0xD9A38AC27D44CC32L, 0x7FDDFF5BAAF410ABL,                                    0xAD6D495AA804824BL, 0xE1A6A74F2D8C9F94L,                                    0xD4F7851235DEE8E3L, 0xFD4B7F886540D893L,                                    0x247C20042AA4BFDAL, 0x096EA1C517D1327CL,                                    0xD56966B4361A6685L, 0x277DA5C31221057DL,                                    0x94D59893A43ACFF7L, 0x64F0C51CCDC02281L,                                    0x3D33BCC4FF6189DBL, 0xE005CB184CE66AF1L,                                    0xFF5CCD1D1DB99BEAL, 0xB0B854A7FE42980FL,                                    0x7BD46A6A718D4B9FL, 0xD10FA8CC22A5FD8CL,                                    0xD31484952BE4BD31L, 0xC7FA975FCB243847L,                                    0x4886ED1E5846C407L, 0x28CDDB791EB70B04L,                                    0xC2B00BE2F573417FL, 0x5C9590452180F877L,                                    0x7A6BDDFFF370EB00L, 0xCE509E38D6D9D6A4L,                                    0xEBEB0F00647FA702L, 0x1DCC06CF76606F06L,                                    0xE4D9F28BA286FF0AL, 0xD85A305DC918C262L,                                    0x475B1D8732225F54L, 0x2D4FB51668CCB5FEL,                                    0xA679B9D9D72BBA20L, 0x53841C0D912D43A5L,                                    0x3B7EAA48BF12A4E8L, 0x781E0E47F22F1DDFL,                                    0xEFF20CE60AB50973L, 0x20D261D19DFFB742L,                                    0x16A12B03062A2E39L, 0x1960EB2239650495L,                                    0x251C16FED50EB8B8L, 0x9AC0C330F826016EL,                                    0xED152665953E7671L, 0x02D63194A6369570L,                                    0x5074F08394B1C987L, 0x70BA598C90B25CE1L,                                    0x794A15810B9742F6L, 0x0D5925E9FCAF8C6CL,                                    0x3067716CD868744EL, 0x910AB077E8D7731BL,                                    0x6A61BBDB5AC42F61L, 0x93513EFBF0851567L,                                    0xF494724B9E83E9D5L, 0xE887E1985C09648DL,                                    0x34B1D3C675370CFDL, 0xDC35E433BC0D255DL,                                    0xD0AAB84234131BE0L, 0x08042A50B48B7EAFL,                                    0x9997C4EE44A3AB35L, 0x829A7B49201799D0L,                                    0x263B8307B7C54441L, 0x752F95F4FD6A6CA6L,                                    0x927217402C08C6E5L, 0x2A8AB754A795D9EEL,                                    0xA442F7552F72943DL, 0x2C31334E19781208L,                                    0x4FA98D7CEAEE6291L, 0x55C3862F665DB309L,                                    0xBD0610175D53B1F3L, 0x46FE6CB840413F27L,                                    0x3FE03792DF0CFA59L, 0xCFE700372EB85E8FL,                                    0xA7BE29E7ADBCE118L, 0xE544EE5CDE8431DDL,                                    0x8A781B1B41F1873EL, 0xA5C94C78A0D2F0E7L,                                    0x39412E2877B60728L, 0xA1265EF3AFC9A62CL,                                    0xBCC2770C6A2506C5L, 0x3AB66DD5DCE1CE12L,                                    0xE65499D04A675B37L, 0x7D8F523481BFD216L,                                    0x0F6F64FCEC15F389L, 0x74EFBE618B5B13C8L,                                    0xACDC82B714273E1DL, 0xDD40BFE003199D17L,                                    0x37E99257E7E061F8L, 0xFA52626904775AAAL,                                    0x8BBBF63A463D56F9L, 0xF0013F1543A26E64L,                                    0xA8307E9F879EC898L, 0xCC4C27A4150177CCL,                                    0x1B432F2CCA1D3348L, 0xDE1D1F8F9F6FA013L,                                    0x606602A047A7DDD6L, 0xD237AB64CC1CB2C7L,                                    0x9B938E7225FCD1D3L, 0xEC4E03708E0FF476L,                                    0xFEB2FBDA3D03C12DL, 0xAE0BCED2EE43889AL,                                    0x22CB8923EBFB4F43L, 0x69360D013CF7396DL,                                    0x855E3602D2D4E022L, 0x073805BAD01F784CL,                                    0x33E17A133852F546L, 0xDF4874058AC7B638L,                                    0xBA92B29C678AA14AL, 0x0CE89FC76CFAADCDL,                                    0x5F9D4E0908339E34L, 0xF1AFE9291F5923B9L,                                    0x6E3480F60F4A265FL, 0xEEBF3A2AB29B841CL,                                    0xE21938A88F91B4ADL, 0x57DFEFF845C6D3C3L,                                    0x2F006B0BF62CAAF2L, 0x62F479EF6F75EE78L,                                    0x11A55AD41C8916A9L, 0xF229D29084FED453L,                                    0x42F1C27B16B000E6L, 0x2B1F76749823C074L,                                    0x4B76ECA3C2745360L, 0x8C98F463B91691BDL,                                    0x14BCC93CF1ADE66AL, 0x8885213E6D458397L,                                    0x8E177DF0274D4711L, 0xB49B73B5503F2951L,                                    0x10168168C3F96B6BL, 0x0E3D963B63CAB0AEL,                                    0x8DFC4B5655A1DB14L, 0xF789F1356E14DE5CL,                                    0x683E68AF4E51DAC1L, 0xC9A84F9D8D4B0FD9L,                                    0x3691E03F52A0F9D1L, 0x5ED86E46E1878E80L,                                    0x3C711A0E99D07150L, 0x5A0865B20C4E9310L,                                    0x56FBFC1FE4F0682EL, 0xEA8D5DE3105EDF9BL,                                    0x71ABFDB12379187AL, 0x2EB99DE1BEE77B9CL,                                    0x21ECC0EA33CF4523L, 0x59A4D7521805C7A1L,                                    0x3896F5EB56AE7C72L, 0xAA638F3DB18F75DCL,                                    0x9F39358DABE9808EL, 0xB7DEFA91C00B72ACL,                                    0x6B5541FD62492D92L, 0x6DC6DEE8F92E4D5BL,                                    0x353F57ABC4BEEA7EL, 0x735769D6DA5690CEL,                                    0x0A234AA642391484L, 0xF6F9508028F80D9DL,                                    0xB8E319A27AB3F215L, 0x31AD9C1151341A4DL,                                    0x773C22A57BEF5805L, 0x45C7561A07968633L,                                    0xF913DA9E249DBE36L, 0xDA652D9B78A64C68L,                                    0x4C27A97F3BC334EFL, 0x76621220E66B17F4L,                                    0x967743899ACD7D0BL, 0xF3EE5BCAE0ED6782L,                                    0x409F753600C879FCL, 0x06D09A39B5926DB6L,                                    0x6F83AEB0317AC588L, 0x01E6CA4A86381F21L,                                    0x66FF3462D19F3025L, 0x72207C24DDFD3BFBL,                                    0x4AF6B6D3E2ECE2EBL, 0x9C994DBEC7EA08DEL,                                    0x49ACE597B09A8BC4L, 0xB38C4766CF0797BAL,                                    0x131B9373C57C2A75L, 0xB1822CCE61931E58L,                                    0x9D7555B909BA1C0CL, 0x127FAFDD937D11D2L,                                    0x29DA3BADC66D92E4L, 0xA2C1D57154C2ECBCL,                                    0x58C5134D82F6FE24L, 0x1C3AE3515B62274FL,                                    0xE907C82E01CB8126L, 0xF8ED091913E37FCBL,                                    0x3249D8F9C80046C9L, 0x80CF9BEDE388FB63L,                                    0x1881539A116CF19EL, 0x5103F3F76BD52457L,                                    0x15B7E6F5AE47F7A8L, 0xDBD7C6DED47E9CCFL,                                    0x44E55C410228BB1AL, 0xB647D4255EDB4E99L,                                    0x5D11882BB8AAFC30L, 0xF5098BBB29D3212AL,                                    0x8FB5EA14E90296B3L, 0x677B942157DD025AL,                                    0xFB58E7C0A390ACB5L, 0x89D3674C83BD4A01L,                                    0x9E2DA4DF4BF3B93BL, 0xFCC41E328CAB4829L,                                    0x03F38C96BA582C52L, 0xCAD1BDBD7FD85DB2L,                                    0xBBB442C16082AE83L, 0xB95FE86BA5DA9AB0L,                                    0xB22E04673771A93FL, 0x845358C9493152D8L,                                    0xBE2A488697B4541EL, 0x95A2DC2DD38E6966L,                                    0xC02C11AC923C852BL, 0x2388B1990DF2A87BL,                                    0x7C8008FA1B4F37BEL, 0x1F70D0C84D54E503L,                                    0x5490ADEC7ECE57D4L, 0x002B3C27D9063A3AL,                                    0x7EAEA3848030A2BFL, 0xC602326DED2003C0L,                                    0x83A7287D69A94086L, 0xC57A5FCB30F57A8AL,                                    0xB56844E479EBE779L, 0xA373B40F05DCBCE9L,                                    0xD71A786E88570EE2L, 0x879CBACDBDE8F6A0L,                                    0x976AD1BCC164A32FL, 0xAB21E25E9666D78BL,                                    0x901063AAE5E5C33CL, 0x9818B34448698D90L,                                    0xE36487AE3E1E8ABBL, 0xAFBDF931893BDCB4L,                                    0x6345A0DC5FBBD519L, 0x8628FE269B9465CAL,                                    0x1E5D01603F9C51ECL, 0x4DE44006A15049B7L,                                    0xBF6C70E5F776CBB1L, 0x411218F2EF552BEDL,                                    0xCB0C0708705A36A3L, 0xE74D14754F986044L,                                    0xCD56D9430EA8280EL, 0xC12591D7535F5065L,                                    0xC83223F1720AEF96L, 0xC3A0396F7363A51FL };  // The cached self-test result.  private static Boolean valid;  // The context.  private long a, b, c;  // Constructors.  // -----------------------------------------------------------------------  /**   * Trivial 0-arguments constructor.   */  public Tiger()  {    super(Registry.TIGER_HASH, HASH_SIZE, BLOCK_SIZE);  }  /**   * Private copying constructor for cloning.   *   * @param that The instance being cloned.   */  private Tiger(Tiger that)  {    this();    this.a = that.a;    this.b = that.b;    this.c = that.c;    this.count = that.count;    this.buffer = (that.buffer != null) ? (byte[]) that.buffer.clone() : null;  }  // Instance methods implementing BaseHash.  // -----------------------------------------------------------------------  public Object clone()  {    return new Tiger(this);  }  public boolean selfTest()  {    if (valid == null)      {        valid = new Boolean(DIGEST0.equals(Util.toString(new Tiger().digest())));      }    return valid.booleanValue();  }  protected byte[] padBuffer()  {    int n = (int) (count % BLOCK_SIZE);    int padding = (n < 56) ? (56 - n) : (120 - n);    byte[] pad = new byte[padding + 8];    pad[0] = 1;    long bits = count << 3;    pad[padding++] = (byte) bits;    pad[padding++] = (byte) (bits >>> 8);    pad[padding++] = (byte) (bits >>> 16);    pad[padding++] = (byte) (bits >>> 24);    pad[padding++] = (byte) (bits >>> 32);    pad[padding++] = (byte) (bits >>> 40);    pad[padding++] = (byte) (bits >>> 48);    pad[padding] = (byte) (bits >>> 56);    return pad;  }  protected byte[] getResult()  {    return new byte[] { (byte) a, (byte) (a >>> 8), (byte) (a >>> 16),                       (byte) (a >>> 24), (byte) (a >>> 32), (byte) (a >>> 40),                       (byte) (a >>> 48), (byte) (a >>> 56), (byte) b,                       (byte) (b >>> 8), (byte) (b >>> 16), (byte) (b >>> 24),                       (byte) (b >>> 32), (byte) (b >>> 40), (byte) (b >>> 48),                       (byte) (b >>> 56), (byte) c, (byte) (c >>> 8),                       (byte) (c >>> 16), (byte) (c >>> 24), (byte) (c >>> 32),                       (byte) (c >>> 40), (byte) (c >>> 48), (byte) (c >>> 56) };  }  protected void resetContext()  {    a = A;    b = B;    c = C;  }  protected void transform(byte[] in, int offset)  {    long x0, x1, x2, x3, x4, x5, x6, x7;    x0 = ((long) in[offset++] & 0xFF) | ((long) (in[offset++] & 0xFF) << 8)         | ((long) (in[offset++] & 0xFF) << 16)         | ((long) (in[offset++] & 0xFF) << 24)         | ((long) (in[offset++] & 0xFF) << 32)         | ((long) (in[offset++] & 0xFF) << 40)         | ((long) (in[offset++] & 0xFF) << 48)         | ((long) (in[offset++] & 0xFF) << 56);    x1 = ((long) in[offset++] & 0xFF) | ((long) (in[offset++] & 0xFF) << 8)         | ((long) (in[offset++] & 0xFF) << 16)         | ((long) (in[offset++] & 0xFF) << 24)         | ((long) (in[offset++] & 0xFF) << 32)         | ((long) (in[offset++] & 0xFF) << 40)         | ((long) (in[offset++] & 0xFF) << 48)         | ((long) (in[offset++] & 0xFF) << 56);    x2 = ((long) in[offset++] & 0xFF) | ((long) (in[offset++] & 0xFF) << 8)         | ((long) (in[offset++] & 0xFF) << 16)         | ((long) (in[offset++] & 0xFF) << 24)

⌨️ 快捷键说明

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