大型机中的 SHA256。 REXX 中是不是存在函数?
Posted
技术标签:
【中文标题】大型机中的 SHA256。 REXX 中是不是存在函数?【英文标题】:SHA256 in mainframe. Is function exist in REXX?大型机中的 SHA256。 REXX 中是否存在函数? 【发布时间】:2017-07-31 14:24:51 【问题描述】:我调查了加密字符串 unsing rexx(大型机 ZOS)的问题。 我发现了一些有用的链接: http://rexxeec.sourceforge.net/doc/RexxEEC.pdf
但是当我尝试在 TSO 中使用它时,我得到了一个错误:
**16 +++ hash = eecsha( str )**
My source:
/* Rexx */
str = '*#*@'
hash = eecsha( str )
Say 'SHA value (in hex) of string' str 'is:' hash
那么,也许我忘了添加任何库?或者这完全不可能,我必须自己写 SHA256?
顺便说一句,我从 DB2 加密了一行,看起来不可能像这样使用约束: 从表中选择 HASH(column, 2); 使用 ZOS DB2
【问题讨论】:
【参考方案1】:如果我回到 sourceforge 页面本身,它会声明:
Rexx/EEC 是一个外部函数包,为 加密
所以回答你的问题,是的,除非你添加了那个库,否则你实际上错过了它。
【讨论】:
【参考方案2】:因此,也许您想查看 SYS1.SAMPLIB(CSFTEST) 中的示例如何从 REXX 中调用加密函数。而散列生成的函数是 CSNBOWH(单向散列生成)。
如果您的大型机有加密,那么这个示例应该可以工作:
/* Rexx */ 00010000
00020000
/* initialize parameter list */ 00030000
RetCode = 'FFFFFFFF'x ; 00040000
Reason = 'FFFFFFFF'x ; 00050000
ExitLength = '00000000'x; 00060000
ExitData = '' ; 00070000
RuleArrayCount = '00000001'x ; 00080000
RuleArray = 'SHA-256 ' ; 00090000
TextLength = '00000040'x ; 00100001
Text = 'Applicationtext'!!copies('00'x,49); 00110001
/* 123456789+123456 */ 00120000
ChainVectorLen = '00000080'x; 00130001
ChainVector = copies('00'x,128); 00140001
HashLength = '00000020'x ; /* 32 bytes */ 00150000
Hash = copies('00'x,32); 00160000
00170000
/**********************************/ 00180000
/* Call One-Way Hash Generate */ 00190000
/**********************************/ 00200000
say 'Executing one-way hash generation ...' 00210000
say 00220000
address linkpgm 'CSNBOWH' , 00230000
'RetCode' , 00240000
'Reason' , 00250000
'ExitLength' , 00260000
'ExitData' , 00270000
'RuleArrayCount' , 00280000
'RuleArray' , 00290000
'TextLength' , 00300000
'Text' , 00310000
'ChainVectorLen' , 00320000
'ChainVector' , 00330000
'HashLength' , 00340000
'Hash'; 00350000
00360000
select; 00370000
00380000
/* return code 12 */ 00390000
when RetCode = '0000000C'x then 00400000
do; 00410000
if Reason = '00000000'x then 00420000
do; 00430000
say 'ICSF is not started or the DES/symmetric-key master key ' 00440000
say 'is not set'; 00450000
say 00460000
exit; 00470000
end; 00480000
if Reason = '00000008'x then 00490000
do; 00500000
say 'ICSF is started, the required cryptographic hardware is ' 00510000
say 'not available' 00520000
say 00530000
exit; 00540000
end; 00550000
end; 00560000
00570000
/* return code 0 */ 00580000
when RetCode = '00000000'x then 00590000
do 00600000
say 'successful completion ...'; 00610000
say 'Generated SHA 256 hash:' ; 00620001
say c2x(Hash); 00630001
say ; 00640000
end; 00650000
00660000
/* other return codes */ 00670000
otherwise 00680000
do 00690000
say 'CSNBOWH failed: rc =' c2x(RetCode) 'rs =' c2x(Reason) ; 00700000
say 00710000
exit; 00720000
end; 00730000
00740000
end; /* select */ 00750000
00760000
exit 00770000
描述可以在https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.csfb400/owh.htm找到
【讨论】:
以上是关于大型机中的 SHA256。 REXX 中是不是存在函数?的主要内容,如果未能解决你的问题,请参考以下文章