📄 tiger.pas
字号:
unit Tiger;
{(C) Coban (alex@ritlabs.com)}
interface
uses
CryptoUtils;
type
PTigerCtx = ^TTigerCtx;
TTigerCtx = record
state: array[0..2] of Int64;
length, curlen: LongWord;
buf: array[0..63] of Byte;
end;
procedure TigerInit(var ctx: TTigerCtx);
procedure TigerUpdate(var ctx: TTigerCtx; buf: Pointer; len: LongWord; PASSES: LongWord);
function TigerFinal(var ctx: TTigerCtx; sz: Word; PASSES: LongWord): String;
implementation
const
T1: array[0..255] of Int64 = (
$02AAB17CF7E90C5E { 0 }, $AC424B03E243A8EC { 1 },
$72CD5BE30DD5FCD3 { 2 }, $6D019B93F6F97F3A { 3 },
$CD9978FFD21F9193 { 4 }, $7573A1C9708029E2 { 5 },
$B164326B922A83C3 { 6 }, $46883EEE04915870 { 7 },
$EAACE3057103ECE6 { 8 }, $C54169B808A3535C { 9 },
$4CE754918DDEC47C { 10 }, $0AA2F4DFDC0DF40C { 11 },
$10B76F18A74DBEFA { 12 }, $C6CCB6235AD1AB6A { 13 },
$13726121572FE2FF { 14 }, $1A488C6F199D921E { 15 },
$4BC9F9F4DA0007CA { 16 }, $26F5E6F6E85241C7 { 17 },
$859079DBEA5947B6 { 18 }, $4F1885C5C99E8C92 { 19 },
$D78E761EA96F864B { 20 }, $8E36428C52B5C17D { 21 },
$69CF6827373063C1 { 22 }, $B607C93D9BB4C56E { 23 },
$7D820E760E76B5EA { 24 }, $645C9CC6F07FDC42 { 25 },
$BF38A078243342E0 { 26 }, $5F6B343C9D2E7D04 { 27 },
$F2C28AEB600B0EC6 { 28 }, $6C0ED85F7254BCAC { 29 },
$71592281A4DB4FE5 { 30 }, $1967FA69CE0FED9F { 31 },
$FD5293F8B96545DB { 32 }, $C879E9D7F2A7600B { 33 },
$860248920193194E { 34 }, $A4F9533B2D9CC0B3 { 35 },
$9053836C15957613 { 36 }, $DB6DCF8AFC357BF1 { 37 },
$18BEEA7A7A370F57 { 38 }, $037117CA50B99066 { 39 },
$6AB30A9774424A35 { 40 }, $F4E92F02E325249B { 41 },
$7739DB07061CCAE1 { 42 }, $D8F3B49CECA42A05 { 43 },
$BD56BE3F51382F73 { 44 }, $45FAED5843B0BB28 { 45 },
$1C813D5C11BF1F83 { 46 }, $8AF0E4B6D75FA169 { 47 },
$33EE18A487AD9999 { 48 }, $3C26E8EAB1C94410 { 49 },
$B510102BC0A822F9 { 50 }, $141EEF310CE6123B { 51 },
$FC65B90059DDB154 { 52 }, $E0158640C5E0E607 { 53 },
$884E079826C3A3CF { 54 }, $930D0D9523C535FD { 55 },
$35638D754E9A2B00 { 56 }, $4085FCCF40469DD5 { 57 },
$C4B17AD28BE23A4C { 58 }, $CAB2F0FC6A3E6A2E { 59 },
$2860971A6B943FCD { 60 }, $3DDE6EE212E30446 { 61 },
$6222F32AE01765AE { 62 }, $5D550BB5478308FE { 63 },
$A9EFA98DA0EDA22A { 64 }, $C351A71686C40DA7 { 65 },
$1105586D9C867C84 { 66 }, $DCFFEE85FDA22853 { 67 },
$CCFBD0262C5EEF76 { 68 }, $BAF294CB8990D201 { 69 },
$E69464F52AFAD975 { 70 }, $94B013AFDF133E14 { 71 },
$06A7D1A32823C958 { 72 }, $6F95FE5130F61119 { 73 },
$D92AB34E462C06C0 { 74 }, $ED7BDE33887C71D2 { 75 },
$79746D6E6518393E { 76 }, $5BA419385D713329 { 77 },
$7C1BA6B948A97564 { 78 }, $31987C197BFDAC67 { 79 },
$DE6C23C44B053D02 { 80 }, $581C49FED002D64D { 81 },
$DD474D6338261571 { 82 }, $AA4546C3E473D062 { 83 },
$928FCE349455F860 { 84 }, $48161BBACAAB94D9 { 85 },
$63912430770E6F68 { 86 }, $6EC8A5E602C6641C { 87 },
$87282515337DDD2B { 88 }, $2CDA6B42034B701B { 89 },
$B03D37C181CB096D { 90 }, $E108438266C71C6F { 91 },
$2B3180C7EB51B255 { 92 }, $DF92B82F96C08BBC { 93 },
$5C68C8C0A632F3BA { 94 }, $5504CC861C3D0556 { 95 },
$ABBFA4E55FB26B8F { 96 }, $41848B0AB3BACEB4 { 97 },
$B334A273AA445D32 { 98 }, $BCA696F0A85AD881 { 99 },
$24F6EC65B528D56C { 100 }, $0CE1512E90F4524A { 101 },
$4E9DD79D5506D35A { 102 }, $258905FAC6CE9779 { 103 },
$2019295B3E109B33 { 104 }, $F8A9478B73A054CC { 105 },
$2924F2F934417EB0 { 106 }, $3993357D536D1BC4 { 107 },
$38A81AC21DB6FF8B { 108 }, $47C4FBF17D6016BF { 109 },
$1E0FAADD7667E3F5 { 110 }, $7ABCFF62938BEB96 { 111 },
$A78DAD948FC179C9 { 112 }, $8F1F98B72911E50D { 113 },
$61E48EAE27121A91 { 114 }, $4D62F7AD31859808 { 115 },
$ECEBA345EF5CEAEB { 116 }, $F5CEB25EBC9684CE { 117 },
$F633E20CB7F76221 { 118 }, $A32CDF06AB8293E4 { 119 },
$985A202CA5EE2CA4 { 120 }, $CF0B8447CC8A8FB1 { 121 },
$9F765244979859A3 { 122 }, $A8D516B1A1240017 { 123 },
$0BD7BA3EBB5DC726 { 124 }, $E54BCA55B86ADB39 { 125 },
$1D7A3AFD6C478063 { 126 }, $519EC608E7669EDD { 127 },
$0E5715A2D149AA23 { 128 }, $177D4571848FF194 { 129 },
$EEB55F3241014C22 { 130 }, $0F5E5CA13A6E2EC2 { 131 },
$8029927B75F5C361 { 132 }, $AD139FABC3D6E436 { 133 },
$0D5DF1A94CCF402F { 134 }, $3E8BD948BEA5DFC8 { 135 },
$A5A0D357BD3FF77E { 136 }, $A2D12E251F74F645 { 137 },
$66FD9E525E81A082 { 138 }, $2E0C90CE7F687A49 { 139 },
$C2E8BCBEBA973BC5 { 140 }, $000001BCE509745F { 141 },
$423777BBE6DAB3D6 { 142 }, $D1661C7EAEF06EB5 { 143 },
$A1781F354DAACFD8 { 144 }, $2D11284A2B16AFFC { 145 },
$F1FC4F67FA891D1F { 146 }, $73ECC25DCB920ADA { 147 },
$AE610C22C2A12651 { 148 }, $96E0A810D356B78A { 149 },
$5A9A381F2FE7870F { 150 }, $D5AD62EDE94E5530 { 151 },
$D225E5E8368D1427 { 152 }, $65977B70C7AF4631 { 153 },
$99F889B2DE39D74F { 154 }, $233F30BF54E1D143 { 155 },
$9A9675D3D9A63C97 { 156 }, $5470554FF334F9A8 { 157 },
$166ACB744A4F5688 { 158 }, $70C74CAAB2E4AEAD { 159 },
$F0D091646F294D12 { 160 }, $57B82A89684031D1 { 161 },
$EFD95A5A61BE0B6B { 162 }, $2FBD12E969F2F29A { 163 },
$9BD37013FEFF9FE8 { 164 }, $3F9B0404D6085A06 { 165 },
$4940C1F3166CFE15 { 166 }, $09542C4DCDF3DEFB { 167 },
$B4C5218385CD5CE3 { 168 }, $C935B7DC4462A641 { 169 },
$3417F8A68ED3B63F { 170 }, $B80959295B215B40 { 171 },
$F99CDAEF3B8C8572 { 172 }, $018C0614F8FCB95D { 173 },
$1B14ACCD1A3ACDF3 { 174 }, $84D471F200BB732D { 175 },
$C1A3110E95E8DA16 { 176 }, $430A7220BF1A82B8 { 177 },
$B77E090D39DF210E { 178 }, $5EF4BD9F3CD05E9D { 179 },
$9D4FF6DA7E57A444 { 180 }, $DA1D60E183D4A5F8 { 181 },
$B287C38417998E47 { 182 }, $FE3EDC121BB31886 { 183 },
$C7FE3CCC980CCBEF { 184 }, $E46FB590189BFD03 { 185 },
$3732FD469A4C57DC { 186 }, $7EF700A07CF1AD65 { 187 },
$59C64468A31D8859 { 188 }, $762FB0B4D45B61F6 { 189 },
$155BAED099047718 { 190 }, $68755E4C3D50BAA6 { 191 },
$E9214E7F22D8B4DF { 192 }, $2ADDBF532EAC95F4 { 193 },
$32AE3909B4BD0109 { 194 }, $834DF537B08E3450 { 195 },
$FA209DA84220728D { 196 }, $9E691D9B9EFE23F7 { 197 },
$0446D288C4AE8D7F { 198 }, $7B4CC524E169785B { 199 },
$21D87F0135CA1385 { 200 }, $CEBB400F137B8AA5 { 201 },
$272E2B66580796BE { 202 }, $3612264125C2B0DE { 203 },
$057702BDAD1EFBB2 { 204 }, $D4BABB8EACF84BE9 { 205 },
$91583139641BC67B { 206 }, $8BDC2DE08036E024 { 207 },
$603C8156F49F68ED { 208 }, $F7D236F7DBEF5111 { 209 },
$9727C4598AD21E80 { 210 }, $A08A0896670A5FD7 { 211 },
$CB4A8F4309EBA9CB { 212 }, $81AF564B0F7036A1 { 213 },
$C0B99AA778199ABD { 214 }, $959F1EC83FC8E952 { 215 },
$8C505077794A81B9 { 216 }, $3ACAAF8F056338F0 { 217 },
$07B43F50627A6778 { 218 }, $4A44AB49F5ECCC77 { 219 },
$3BC3D6E4B679EE98 { 220 }, $9CC0D4D1CF14108C { 221 },
$4406C00B206BC8A0 { 222 }, $82A18854C8D72D89 { 223 },
$67E366B35C3C432C { 224 }, $B923DD61102B37F2 { 225 },
$56AB2779D884271D { 226 }, $BE83E1B0FF1525AF { 227 },
$FB7C65D4217E49A9 { 228 }, $6BDBE0E76D48E7D4 { 229 },
$08DF828745D9179E { 230 }, $22EA6A9ADD53BD34 { 231 },
$E36E141C5622200A { 232 }, $7F805D1B8CB750EE { 233 },
$AFE5C7A59F58E837 { 234 }, $E27F996A4FB1C23C { 235 },
$D3867DFB0775F0D0 { 236 }, $D0E673DE6E88891A { 237 },
$123AEB9EAFB86C25 { 238 }, $30F1D5D5C145B895 { 239 },
$BB434A2DEE7269E7 { 240 }, $78CB67ECF931FA38 { 241 },
$F33B0372323BBF9C { 242 }, $52D66336FB279C74 { 243 },
$505F33AC0AFB4EAA { 244 }, $E8A5CD99A2CCE187 { 245 },
$534974801E2D30BB { 246 }, $8D2D5711D5876D90 { 247 },
$1F1A412891BC038E { 248 }, $D6E2E71D82E56648 { 249 },
$74036C3A497732B7 { 250 }, $89B67ED96361F5AB { 251 },
$FFED95D8F1EA02A2 { 252 }, $E72B3BD61464D43D { 253 },
$A6300F170BDC4820 { 254 }, $EBC18760ED78A77A { 255 });
T2: array[0..255] of Int64 = (
$E6A6BE5A05A12138 { 256 }, $B5A122A5B4F87C98 { 257 },
$563C6089140B6990 { 258 }, $4C46CB2E391F5DD5 { 259 },
$D932ADDBC9B79434 { 260 }, $08EA70E42015AFF5 { 261 },
$D765A6673E478CF1 { 262 }, $C4FB757EAB278D99 { 263 },
$DF11C6862D6E0692 { 264 }, $DDEB84F10D7F3B16 { 265 },
$6F2EF604A665EA04 { 266 }, $4A8E0F0FF0E0DFB3 { 267 },
$A5EDEEF83DBCBA51 { 268 }, $FC4F0A2A0EA4371E { 269 },
$E83E1DA85CB38429 { 270 }, $DC8FF882BA1B1CE2 { 271 },
$CD45505E8353E80D { 272 }, $18D19A00D4DB0717 { 273 },
$34A0CFEDA5F38101 { 274 }, $0BE77E518887CAF2 { 275 },
$1E341438B3C45136 { 276 }, $E05797F49089CCF9 { 277 },
$FFD23F9DF2591D14 { 278 }, $543DDA228595C5CD { 279 },
$661F81FD99052A33 { 280 }, $8736E641DB0F7B76 { 281 },
$15227725418E5307 { 282 }, $E25F7F46162EB2FA { 283 },
$48A8B2126C13D9FE { 284 }, $AFDC541792E76EEA { 285 },
$03D912BFC6D1898F { 286 }, $31B1AAFA1B83F51B { 287 },
$F1AC2796E42AB7D9 { 288 }, $40A3A7D7FCD2EBAC { 289 },
$1056136D0AFBBCC5 { 290 }, $7889E1DD9A6D0C85 { 291 },
$D33525782A7974AA { 292 }, $A7E25D09078AC09B { 293 },
$BD4138B3EAC6EDD0 { 294 }, $920ABFBE71EB9E70 { 295 },
$A2A5D0F54FC2625C { 296 }, $C054E36B0B1290A3 { 297 },
$F6DD59FF62FE932B { 298 }, $3537354511A8AC7D { 299 },
$CA845E9172FADCD4 { 300 }, $84F82B60329D20DC { 301 },
$79C62CE1CD672F18 { 302 }, $8B09A2ADD124642C { 303 },
$D0C1E96A19D9E726 { 304 }, $5A786A9B4BA9500C { 305 },
$0E020336634C43F3 { 306 }, $C17B474AEB66D822 { 307 },
$6A731AE3EC9BAAC2 { 308 }, $8226667AE0840258 { 309 },
$67D4567691CAECA5 { 310 }, $1D94155C4875ADB5 { 311 },
$6D00FD985B813FDF { 312 }, $51286EFCB774CD06 { 313 },
$5E8834471FA744AF { 314 }, $F72CA0AEE761AE2E { 315 },
$BE40E4CDAEE8E09A { 316 }, $E9970BBB5118F665 { 317 },
$726E4BEB33DF1964 { 318 }, $703B000729199762 { 319 },
$4631D816F5EF30A7 { 320 }, $B880B5B51504A6BE { 321 },
$641793C37ED84B6C { 322 }, $7B21ED77F6E97D96 { 323 },
$776306312EF96B73 { 324 }, $AE528948E86FF3F4 { 325 },
$53DBD7F286A3F8F8 { 326 }, $16CADCE74CFC1063 { 327 },
$005C19BDFA52C6DD { 328 }, $68868F5D64D46AD3 { 329 },
$3A9D512CCF1E186A { 330 }, $367E62C2385660AE { 331 },
$E359E7EA77DCB1D7 { 332 }, $526C0773749ABE6E { 333 },
$735AE5F9D09F734B { 334 }, $493FC7CC8A558BA8 { 335 },
$B0B9C1533041AB45 { 336 }, $321958BA470A59BD { 337 },
$852DB00B5F46C393 { 338 }, $91209B2BD336B0E5 { 339 },
$6E604F7D659EF19F { 340 }, $B99A8AE2782CCB24 { 341 },
$CCF52AB6C814C4C7 { 342 }, $4727D9AFBE11727B { 343 },
$7E950D0C0121B34D { 344 }, $756F435670AD471F { 345 },
$F5ADD442615A6849 { 346 }, $4E87E09980B9957A { 347 },
$2ACFA1DF50AEE355 { 348 }, $D898263AFD2FD556 { 349 },
$C8F4924DD80C8FD6 { 350 }, $CF99CA3D754A173A { 351 },
$FE477BACAF91BF3C { 352 }, $ED5371F6D690C12D { 353 },
$831A5C285E687094 { 354 }, $C5D3C90A3708A0A4 { 355 },
$0F7F903717D06580 { 356 }, $19F9BB13B8FDF27F { 357 },
$B1BD6F1B4D502843 { 358 }, $1C761BA38FFF4012 { 359 },
$0D1530C4E2E21F3B { 360 }, $8943CE69A7372C8A { 361 },
$E5184E11FEB5CE66 { 362 }, $618BDB80BD736621 { 363 },
$7D29BAD68B574D0B { 364 }, $81BB613E25E6FE5B { 365 },
$071C9C10BC07913F { 366 }, $C7BEEB7909AC2D97 { 367 },
$C3E58D353BC5D757 { 368 }, $EB017892F38F61E8 { 369 },
$D4EFFB9C9B1CC21A { 370 }, $99727D26F494F7AB { 371 },
$A3E063A2956B3E03 { 372 }, $9D4A8B9A4AA09C30 { 373 },
$3F6AB7D500090FB4 { 374 }, $9CC0F2A057268AC0 { 375 },
$3DEE9D2DEDBF42D1 { 376 }, $330F49C87960A972 { 377 },
$C6B2720287421B41 { 378 }, $0AC59EC07C00369C { 379 },
$EF4EAC49CB353425 { 380 }, $F450244EEF0129D8 { 381 },
$8ACC46E5CAF4DEB6 { 382 }, $2FFEAB63989263F7 { 383 },
$8F7CB9FE5D7A4578 { 384 }, $5BD8F7644E634635 { 385 },
$427A7315BF2DC900 { 386 }, $17D0C4AA2125261C { 387 },
$3992486C93518E50 { 388 }, $B4CBFEE0A2D7D4C3 { 389 },
$7C75D6202C5DDD8D { 390 }, $DBC295D8E35B6C61 { 391 },
$60B369D302032B19 { 392 }, $CE42685FDCE44132 { 393 },
$06F3DDB9DDF65610 { 394 }, $8EA4D21DB5E148F0 { 395 },
$20B0FCE62FCD496F { 396 }, $2C1B912358B0EE31 { 397 },
$B28317B818F5A308 { 398 }, $A89C1E189CA6D2CF { 399 },
$0C6B18576AAADBC8 { 400 }, $B65DEAA91299FAE3 { 401 },
$FB2B794B7F1027E7 { 402 }, $04E4317F443B5BEB { 403 },
$4B852D325939D0A6 { 404 }, $D5AE6BEEFB207FFC { 405 },
$309682B281C7D374 { 406 }, $BAE309A194C3B475 { 407 },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -