首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REXX加密/解密

REXX加密/解密
EN

Stack Overflow用户
提问于 2016-12-20 17:26:27
回答 3查看 702关注 0票数 1

我研究z/OS和REXX,现在有了代码,它从MY.DATA.SET (公共的、私有的)获取公钥和私钥,并加密消息(MSG):

代码语言:javascript
复制
"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                                                              

我想把它传输到DEsrypting代码中,它可以使用相同的密钥对将上面的加密结果(结果按名称存储)转换为普通文本。请帮助:我应该修改我的encpypring代码使其解密吗?线

代码语言:javascript
复制
"ALLOC FI(msgin)  DA(‘MY.DATA.SET(MSGEN)') SHR REUSE"

已更改(MSG->MSGEN)

感谢所有的帮助和回应!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-12 23:12:23

在不知道你的钥匙是什么的情况下,我认为你需要在你的翻译行中倒转键。

2.1.0/com.ibm.zos.v2r1.ikja300/transl.htm

代码语言:javascript
复制
Here are some examples: 
TRANSLATE('abcdef')                    ->    'ABCDEF'
TRANSLATE('abbc','&','b')              ->    'a&&c'
TRANSLATE('abcdef','12','ec')          ->    'ab2d1f'
TRANSLATE('abcdef','12','abcd','.')    ->    '12..ef'
TRANSLATE('APQRV',,'PR')               ->    'A Q V'
TRANSLATE('APQRV',XRANGE('00'X,'Q'))   ->    'APQ  '
TRANSLATE('4123','abcd','1234')        ->    'dabc'



do i=1 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_dencrypted_line                                           
end
票数 0
EN

Stack Overflow用户

发布于 2017-06-13 23:59:39

代码语言:javascript
复制
/* 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                                             
票数 0
EN

Stack Overflow用户

发布于 2017-06-13 23:52:51

这是来自IBM的2016年大型机。这是比赛的训练系统。2016年的比赛已经结束了。

关于输出第一行的内容可以注释掉。I变量在do i=2到msg.0中更高,就像我的"2“那样跳过了输出的第一行。

公钥已经在MSG输入中,所以只需要- pub.1 = msg.1

删除或注释掉ALLOC、FREE和EXECIO的公钥。

如果你不这样做的话,它会起作用的,但这并不是一个完整的任务。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41248036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档