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

📄 aes-s390x.pl

📁 著名的开源密码源代码
💻 PL
📖 第 1 页 / 共 3 页
字号:
	0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d,	0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8,	0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd,	0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34,	0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163,	0xd731dcca, 0x42638510, 0x13972240, 0x84c61120,	0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d,	0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0,	0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422,	0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,	0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36,	0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4,	0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662,	0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5,	0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3,	0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b,	0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8,	0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6,	0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6,	0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,	0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815,	0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f,	0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df,	0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f,	0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e,	0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713,	0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89,	0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c,	0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf,	0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,	0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f,	0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541,	0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190,	0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742);$code.=<<___;# Td4[256].byte	0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38.byte	0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb.byte	0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87.byte	0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb.byte	0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d.byte	0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e.byte	0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2.byte	0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25.byte	0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16.byte	0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92.byte	0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda.byte	0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84.byte	0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a.byte	0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06.byte	0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02.byte	0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b.byte	0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea.byte	0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73.byte	0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85.byte	0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e.byte	0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89.byte	0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b.byte	0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20.byte	0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4.byte	0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31.byte	0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f.byte	0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d.byte	0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef.byte	0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0.byte	0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61.byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26.byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d.size	AES_Td,.-AES_Td# void AES_decrypt(const unsigned char *inp, unsigned char *out,# 		 const AES_KEY *key) {.globl	AES_decrypt.type	AES_decrypt,\@functionAES_decrypt:___$code.=<<___ if (!$softonly);	l	%r0,240($key)	lhi	%r1,16	clr	%r0,%r1	jl	.Ldsoft	la	%r1,0($key)	#la	%r2,0($inp)	la	%r4,0($out)	lghi	%r3,16		# single block length	.long	0xb92e0042	# km %r4,%r2	brc	1,.-4		# can this happen?	br	%r14.align	64.Ldsoft:___$code.=<<___;	stmg	%r3,$ra,24($sp)	llgf	$s0,0($inp)	llgf	$s1,4($inp)	llgf	$s2,8($inp)	llgf	$s3,12($inp)	larl	$tbl,AES_Td	bras	$ra,_s390x_AES_decrypt	lg	$out,24($sp)	st	$s0,0($out)	st	$s1,4($out)	st	$s2,8($out)	st	$s3,12($out)	lmg	%r6,$ra,48($sp)	br	$ra.size	AES_decrypt,.-AES_decrypt.type   _s390x_AES_decrypt,\@function.align	16_s390x_AES_decrypt:	stg	$ra,152($sp)	x	$s0,0($key)	x	$s1,4($key)	x	$s2,8($key)	x	$s3,12($key)	l	$rounds,240($key)	llill	$mask,`0xff<<3`	aghi	$rounds,-1	j	.Ldec_loop.align	16.Ldec_loop:	srlg	$t1,$s0,`16-3`	srlg	$t2,$s0,`8-3`	sllg	$t3,$s0,`0+3`	srl	$s0,`24-3`	nr	$s0,$mask	nr	$t1,$mask	nr	$t2,$mask	ngr	$t3,$mask	sllg	$i1,$s1,`0+3`	# i0	srlg	$i2,$s1,`16-3`	srlg	$i3,$s1,`8-3`	srl	$s1,`24-3`	ngr	$i1,$mask	nr	$s1,$mask	nr	$i2,$mask	nr	$i3,$mask	l	$s0,0($s0,$tbl)	# Td0[s0>>24]	l	$t1,3($t1,$tbl)	# Td1[s0>>16]	l	$t2,2($t2,$tbl)	# Td2[s0>>8]	l	$t3,1($t3,$tbl)	# Td3[s0>>0]	x	$s0,1($i1,$tbl)	# Td3[s1>>0]	l	$s1,0($s1,$tbl)	# Td0[s1>>24]	x	$t2,3($i2,$tbl)	# Td1[s1>>16]	x	$t3,2($i3,$tbl)	# Td2[s1>>8]	srlg	$i1,$s2,`8-3`	# i0	sllg	$i2,$s2,`0+3`	# i1	srlg	$i3,$s2,`16-3`	srl	$s2,`24-3`	nr	$i1,$mask	ngr	$i2,$mask	nr	$s2,$mask	nr	$i3,$mask	xr	$s1,$t1	srlg	$ra,$s3,`8-3`	# i1	srlg	$t1,$s3,`16-3`	# i0	nr	$ra,$mask	la	$key,16($key)	nr	$t1,$mask	x	$s0,2($i1,$tbl)	# Td2[s2>>8]	x	$s1,1($i2,$tbl)	# Td3[s2>>0]	l	$s2,0($s2,$tbl)	# Td0[s2>>24]	x	$t3,3($i3,$tbl)	# Td1[s2>>16]	sllg	$i3,$s3,`0+3`	# i2	srl	$s3,`24-3`	ngr	$i3,$mask	nr	$s3,$mask	xr	$s2,$t2	x	$s0,0($key)	x	$s1,4($key)	x	$s2,8($key)	x	$t3,12($key)	x	$s0,3($t1,$tbl)	# Td1[s3>>16]	x	$s1,2($ra,$tbl)	# Td2[s3>>8]	x	$s2,1($i3,$tbl)	# Td3[s3>>0]	l	$s3,0($s3,$tbl)	# Td0[s3>>24]	xr	$s3,$t3	brct	$rounds,.Ldec_loop	.align	16	l	$t1,`2048+0`($tbl)	# prefetch Td4	l	$t2,`2048+64`($tbl)	l	$t3,`2048+128`($tbl)	l	$i1,`2048+192`($tbl)	llill	$mask,0xff	srlg	$i3,$s0,24	# i0	srlg	$t1,$s0,16	srlg	$t2,$s0,8	nr	$s0,$mask	# i3	nr	$t1,$mask	srlg	$i1,$s1,24	nr	$t2,$mask	srlg	$i2,$s1,16	srlg	$ra,$s1,8	nr	$s1,$mask	# i0	nr	$i2,$mask	nr	$ra,$mask	llgc	$i3,2048($i3,$tbl)	# Td4[s0>>24]	llgc	$t1,2048($t1,$tbl)	# Td4[s0>>16]	llgc	$t2,2048($t2,$tbl)	# Td4[s0>>8]	sll	$t1,16	llgc	$t3,2048($s0,$tbl)	# Td4[s0>>0]	sllg	$s0,$i3,24	sll	$t2,8	llgc	$s1,2048($s1,$tbl)	# Td4[s1>>0]	llgc	$i1,2048($i1,$tbl)	# Td4[s1>>24]	llgc	$i2,2048($i2,$tbl)	# Td4[s1>>16]	sll	$i1,24	llgc	$i3,2048($ra,$tbl)	# Td4[s1>>8]	sll	$i2,16	sll	$i3,8	or	$s0,$s1	or	$t1,$i1	or	$t2,$i2	or	$t3,$i3	srlg	$i1,$s2,8	# i0	srlg	$i2,$s2,24	srlg	$i3,$s2,16	nr	$s2,$mask	# i1	nr	$i1,$mask	nr	$i3,$mask	llgc	$i1,2048($i1,$tbl)	# Td4[s2>>8]	llgc	$s1,2048($s2,$tbl)	# Td4[s2>>0]	llgc	$i2,2048($i2,$tbl)	# Td4[s2>>24]	llgc	$i3,2048($i3,$tbl)	# Td4[s2>>16]	sll	$i1,8	sll	$i2,24	or	$s0,$i1	sll	$i3,16	or	$t2,$i2	or	$t3,$i3	srlg	$i1,$s3,16	# i0	srlg	$i2,$s3,8	# i1	srlg	$i3,$s3,24	nr	$s3,$mask	# i2	nr	$i1,$mask	nr	$i2,$mask	lg	$ra,152($sp)	or	$s1,$t1	l	$t0,16($key)	l	$t1,20($key)	llgc	$i1,2048($i1,$tbl)	# Td4[s3>>16]	llgc	$i2,2048($i2,$tbl)	# Td4[s3>>8]	sll	$i1,16	llgc	$s2,2048($s3,$tbl)	# Td4[s3>>0]	llgc	$s3,2048($i3,$tbl)	# Td4[s3>>24]	sll	$i2,8	sll	$s3,24	or	$s0,$i1	or	$s1,$i2	or	$s2,$t2	or	$s3,$t3	xr	$s0,$t0	xr	$s1,$t1	x	$s2,24($key)	x	$s3,28($key)	br	$ra	.size	_s390x_AES_decrypt,.-_s390x_AES_decrypt___$code.=<<___;# void AES_set_encrypt_key(const unsigned char *in, int bits,# 		 AES_KEY *key) {.globl	AES_set_encrypt_key.type	AES_set_encrypt_key,\@function.align	16AES_set_encrypt_key:	lghi	$t0,0	clgr	$inp,$t0	je	.Lminus1	clgr	$key,$t0	je	.Lminus1	lghi	$t0,128	clr	$bits,$t0	je	.Lproceed	lghi	$t0,192	clr	$bits,$t0	je	.Lproceed	lghi	$t0,256	clr	$bits,$t0	je	.Lproceed	lghi	%r2,-2	br	%r14.align	16.Lproceed:___$code.=<<___ if (!$softonly);	# convert bits to km code, [128,192,256]->[18,19,20]	lhi	%r5,-128	lhi	%r0,18	ar	%r5,$bits	srl	%r5,6	ar	%r5,%r0	lghi	%r0,0		# query capability vector	la	%r1,16($sp)	.long	0xb92f0042	# kmc %r4,%r2	llihh	%r1,0x8000	srlg	%r1,%r1,0(%r5)	ng	%r1,16($sp)	jz	.Lekey_internal	lmg	%r0,%r1,0($inp)	# just copy 128 bits...	stmg	%r0,%r1,0($key)	lhi	%r0,192	cr	$bits,%r0	jl	1f	lg	%r1,16($inp)	stg	%r1,16($key)	je	1f	lg	%r1,24($inp)	stg	%r1,24($key)1:	st	$bits,236($key)	# save bits	st	%r5,240($key)	# save km code	lghi	%r2,0	br	%r14___$code.=<<___;.align	16.Lekey_internal:	stmg	%r6,%r13,48($sp)	# all non-volatile regs	larl	$tbl,AES_Te+2048	llgf	$s0,0($inp)	llgf	$s1,4($inp)	llgf	$s2,8($inp)	llgf	$s3,12($inp)	st	$s0,0($key)	st	$s1,4($key)	st	$s2,8($key)	st	$s3,12($key)	lghi	$t0,128	cr	$bits,$t0	jne	.Lnot128	llill	$mask,0xff	lghi	$t3,0			# i=0	lghi	$rounds,10	st	$rounds,240($key)	llgfr	$t2,$s3			# temp=rk[3]	srlg	$i1,$s3,8	srlg	$i2,$s3,16	srlg	$i3,$s3,24	nr	$t2,$mask	nr	$i1,$mask	nr	$i2,$mask.align	16.L128_loop:	la	$t2,0($t2,$tbl)	la	$i1,0($i1,$tbl)	la	$i2,0($i2,$tbl)	la	$i3,0($i3,$tbl)	icm	$t2,2,0($t2)		# Te4[rk[3]>>0]<<8	icm	$t2,4,0($i1)		# Te4[rk[3]>>8]<<16	icm	$t2,8,0($i2)		# Te4[rk[3]>>16]<<24	icm	$t2,1,0($i3)		# Te4[rk[3]>>24]	x	$t2,256($t3,$tbl)	# rcon[i]	xr	$s0,$t2			# rk[4]=rk[0]^...	xr	$s1,$s0			# rk[5]=rk[1]^rk[4]	xr	$s2,$s1			# rk[6]=rk[2]^rk[5]	xr	$s3,$s2			# rk[7]=rk[3]^rk[6]	llgfr	$t2,$s3			# temp=rk[3]	srlg	$i1,$s3,8	srlg	$i2,$s3,16	nr	$t2,$mask	nr	$i1,$mask	srlg	$i3,$s3,24	nr	$i2,$mask	st	$s0,16($key)	st	$s1,20($key)	st	$s2,24($key)	st	$s3,28($key)	la	$key,16($key)		# key+=4	la	$t3,4($t3)		# i++	brct	$rounds,.L128_loop	lghi	%r2,0	lmg	%r6,%r13,48($sp)	br	$ra.align	16.Lnot128:	llgf	$t0,16($inp)	llgf	$t1,20($inp)	st	$t0,16($key)	st	$t1,20($key)	lghi	$t0,192	cr	$bits,$t0	jne	.Lnot192	llill	$mask,0xff	lghi	$t3,0			# i=0	lghi	$rounds,12	st	$rounds,240($key)	lghi	$rounds,8	srlg	$i1,$t1,8	srlg	$i2,$t1,16	srlg	$i3,$t1,24	nr	$t1,$mask	nr	$i1,$mask	nr	$i2,$mask.align	16.L192_loop:	la	$t1,0($t1,$tbl)	la	$i1,0($i1,$tbl)	la	$i2,0($i2,$tbl)	la	$i3,0($i3,$tbl)	icm	$t1,2,0($t1)		# Te4[rk[5]>>0]<<8	icm	$t1,4,0($i1)		# Te4[rk[5]>>8]<<16	icm	$t1,8,0($i2)		# Te4[rk[5]>>16]<<24

⌨️ 快捷键说明

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