Encryption 通过REXX进行加密/解密
我研究了z/OS和REXX,现在有了代码,它从MY.DATA.SET public、private中获取公钥和私钥,并加密消息MSG:Encryption 通过REXX进行加密/解密,encryption,zos,rexx,Encryption,Zos,Rexx,我研究了z/OS和REXX,现在有了代码,它从MY.DATA.SET public、private中获取公钥和私钥,并加密消息MSG: "ALLOC FI(pubkey) DA('MY.DATA.SET(PUBLIC)') SHR REUSE" "ALLOC FI(prikey) DA('MY.DATA.SET(PRIVATE)') SHR REUSE" "ALLOC FI(msgin) DA(‘MY.DATA.SET(MSG)') SHR REUSE" "ALLOC FI(ms
"ALLOC FI(pubkey) DA('MY.DATA.SET(PUBLIC)') SHR REUSE"
"ALLOC FI(prikey) DA('MY.DATA.SET(PRIVATE)') SHR REUSE"
"ALLOC FI(msgin) DA(‘MY.DATA.SET(MSG)') SHR REUSE"
"ALLOC FI(msgout) DA(*) SHR REUSE"
"EXECIO 1 DISKR pubkey (STEM pub. FINIS"
"EXECIO 1 DISKR prikey (STEM pri. FINIS"
"EXECIO * DISKR msgin (STEM msg. FINIS"
"EXECIO 0 DISKW msgout (STEM enc_msg. OPEN"
enc_msg.1 = pub.1
"EXECIO 1 DISKW msgout (STEM enc_msg. "
do i=1 to msg.0
do j=1 to length(msg.i)
letter.j = substr(msg.i,j,1)
encrypt.j = translate(letter.j,pri.1,pub.1)
end
call write_encrypted_line
end
"EXECIO 0 DISKW msgout (FINIS"
"FREE FI(pubkey)"
"FREE FI(prikey)"
"FREE FI(msgin)"
"FREE FI(msgout)"
exit 0
write_encrypted_line:
charout = ''
newchar = ''
do j=1 to length(msg.i)
newchar = encrypt.j
charout = charout||newchar
end
enc_msg.1 = charout
"EXECIO 1 DISKW msgout (STEM enc_msg. "
return
我想把它转换成反加密代码,它可以解密上面的加密结果。结果以MSGEN的名字存储到普通文本中,当然,使用相同的密钥对。
请,帮助:我应该在EncpySpring代码中更改什么以使其解密?线路
"ALLOC FI(msgin) DA(‘MY.DATA.SET(MSGEN)') SHR REUSE"
已更改为MSG->MSGEN
感谢所有的帮助和回应 在不知道您的键是什么的情况下,我认为您需要在翻译行中反转键
这是IBM Master the Mainframe 2016提供的。这是比赛的训练系统。2016年的比赛已经结束了 关于输出第1行的内容可以注释掉。 在do I=2到msg.0中,I变量变得更高,与我的2类似 跳过输出的第一行 公钥已在MSG输入中,因此只需- pub.1=msg.1 删除或注释掉公钥的ALLOC、FREE和EXECIO
如果你不这样做,它会起作用,但这不是一项完整的任务。这似乎是一个家庭作业问题,是吗?到目前为止,你做了些什么使它起作用?不是家庭作业,而是任务作业。我读过关于AES Clear Key-Generate、Write to CKDS、Encrypt and Decrypt、AES Secure Key-Generate、Write to CKDS、Encrypt and Decrypt和很多关于REXX的内容,但是没有任何地方能找到这样的例子。我想,首先我必须删除字符串enc_msg.1=pub.1,我写了吗?然后将所有的en改为de,比如:write_decrypted_line,dec_msg,等等,然后我认为有必要更改块DO-END。我尝试了不同的方法,比如encrypt.j=substrmsg.I,j,1decrypt.j=translateencrypt.j,pri.1,pub.1,但输出仍然是加密的。如果你能解释,我哪里错了,我会很高兴的!我真是个傻瓜!有必要在翻译中替换pub.1和pri.1,就是这样吗?但是第一行仍然是加密的。请问我该如何解决这个问题?请把你的两个答案合并成一个
/* REXX */
/******************************************************************/
/** **/
/** Get access to private key, public key, and message **/
/** **/
/******************************************************************/
"ALLOC FI(prikey) DA('ZOS.PUBLIC.SECRET.MESSAGES(PRIVATE)') SHR REUSE"
"ALLOC FI(msgin) DA('ZOS.PUBLIC.SECRET.MESSAGES(SECRET)') SHR REUSE"
/* "ALLOC FI(msgout) DA(*) SHR REUSE" */
/******************************************************************/
/** **/
/** In the DECRYPT REXX routine, upon successful decryption **/
/** of ZOS.PUBLIC.SECRET.MESSAGES(SECRET), uncomment msgout **/
/** ALLOC below and comment the msgout ALLOC above **/
/** **/
/******************************************************************/
"ALLOC FI(msgout) DA(P3.OUTPUT(#14)) SHR REUSE"
/******************************************************************/
/** **/
/** Read private key, public key, and message **/
/** **/
/******************************************************************/
"EXECIO 1 DISKR prikey (STEM pri. FINIS"
"EXECIO * DISKR msgin (STEM msg. FINIS"
pub.1 = msg.1
/* say msg.1 */
/******************************************************************/
/** **/
/** Parse encrypted message using (REVERSE) private and public **/
/** key pair to create decrypted message **/
/** **/
/******************************************************************/
do i=2 to msg.0
do j=1 to length(msg.i)
letter.j = substr(msg.i,j,1)
decrypt.j = translate(letter.j,pub.1,pri.1)
end
call write_decrypted_line
/* REXX */
/******************************************************************/
/** **/
/** Get access to private key, public key, and message **/
/** **/
/******************************************************************/
"ALLOC FI(prikey) DA('ZOS.PUBLIC.SECRET.MESSAGES(PRIVATE)') SHR REUSE"
"ALLOC FI(msgin) DA('ZOS.PUBLIC.SECRET.MESSAGES(SECRET)') SHR REUSE"
/* "ALLOC FI(msgout) DA(*) SHR REUSE" */
/******************************************************************/
/** **/
/** In the DECRYPT REXX routine, upon successful decryption **/
/** of ZOS.PUBLIC.SECRET.MESSAGES(SECRET), uncomment msgout **/
/** ALLOC below and comment the msgout ALLOC above **/
/** **/
/******************************************************************/
"ALLOC FI(msgout) DA(P3.OUTPUT(#14)) SHR REUSE"
/******************************************************************/
/** **/
/** Read private key, public key, and message **/
/** **/
/******************************************************************/
"EXECIO 1 DISKR prikey (STEM pri. FINIS"
"EXECIO * DISKR msgin (STEM msg. FINIS"
pub.1 = msg.1
/* say msg.1 */
/******************************************************************/
/** **/
/** Parse encrypted message using (REVERSE) private and public **/
/** key pair to create decrypted message **/
/** **/
/******************************************************************/
do i=2 to msg.0
do j=1 to length(msg.i)
letter.j = substr(msg.i,j,1)
decrypt.j = translate(letter.j,pub.1,pri.1)
end
call write_decrypted_line