📄 nvo_md5.sru
字号:
return ll_return
end function
private function long of_i (readonly long al_x, readonly long al_y, readonly long al_z);
/*******************************************************************
函数名称:of_i()
参数: al_x long 值1
al_y long 值2
al_z long 值3
返回值: long 位运算结果
功能描述:md5加密时的位运算之一
*******************************************************************/
return inv_numerical.of_bitwisexor(al_y,inv_numerical.of_bitwiseor(al_x,(al_z + 1) * (-1)))
end function
private function long of_ii (readonly long al_a, readonly long al_b, readonly long al_c, readonly long al_d, readonly long al_x, readonly long al_s, readonly long al_ac);
/*******************************************************************
函数名称:of_ii()
参数: al_a long 值1
al_b long 值2
al_c long 值3
al_d long 值4
al_x long 值5
al_s long 值6
al_ac long 值7
返回值: long 运算结果
功能描述:md5加密时的运算之一
*******************************************************************/
long ll_return
ll_return = this.of_i(al_b,al_c,al_d)
ll_return = this.of_addunsigned(ll_return,al_x)
ll_return = this.of_addunsigned(ll_return,al_ac)
ll_return = this.of_addunsigned(al_a,ll_return)
ll_return = this.of_rotateleft(ll_return,al_s)
ll_return = this.of_addunsigned(ll_return,al_b)
return ll_return
end function
private function long of_lshift (readonly long al_oldvalue, readonly long al_shiftbits);
/*******************************************************************
函数名称:of_lshift()
参数: al_oldvalue long 原值
al_shiftbits long 左移位数
返回值: long 左移指定位数后的值
功能描述:数值按位左移
*******************************************************************/
ulong ll_return,ll_pos
string ls_value
//转成二进制
ls_value = inv_numerical.of_binary(al_oldvalue)
if al_oldvalue < 0 then
ls_value = midw(ls_value,2,lenw(ls_value))
ls_value = inv_numerical.of_bitwisenot(ls_value)
//低位加1
//ll_pos = lastpos(ls_value,'0')
if ll_pos = 0 then
ls_value = fill('0',lenw(ls_value))
else
ls_value = leftw(ls_value,ll_pos - 1) + '1' + fill('0',lenw(ls_value) - ll_pos)
end if
ls_value = fill('1',32 - lenw(ls_value)) + ls_value
ll_return = inv_numerical.of_decimal(ls_value)
else
ll_return = al_oldvalue
end if
ll_return = ll_return * this.of_m2power(al_shiftbits)
ll_return = inv_numerical.of_bitwiseand(ll_return,-1)
return ll_return
end function
private function long of_m2power (readonly long al_oldvalue);
/*******************************************************************
函数名称:of_m2power()
参数: al_oldvalue long 原值
返回值: long 新值
功能描述:md5加密时的运算之一
*******************************************************************/
if al_oldvalue >= 0 and al_oldvalue <= 30 then
return 2^al_oldvalue
else
return 0
end if
end function
private function long of_monbits (readonly long al_oldvalue);
/*******************************************************************
函数名称:of_monbits()
参数: al_oldvalue long 原值
返回值: long 新值
功能描述:md5加密时的运算之一
*******************************************************************/
if al_oldvalue >= 0 and al_oldvalue <= 30 then
return 2^(al_oldvalue + 1) - 1
else
return 0
end if
end function
private function long of_rotateleft (readonly long al_oldvalue, readonly long al_shiftbits);
/*******************************************************************
函数名称:of_rotateleft()
参数: al_oldvalue long 原值
al_shiftbits long 左移位数
返回值: long 数据左移指定位数后的值
功能描述:数据左移指定位数
*******************************************************************/
return inv_numerical.of_bitwiseor(this.of_lshift(al_oldvalue,al_shiftbits),this.of_rshift(al_oldvalue,32 - al_shiftbits))
end function
private function long of_rshift (readonly long al_oldvalue, readonly long al_shiftbits);
/*******************************************************************
函数名称:of_rshift()
参数: al_oldvalue long 原值
al_shiftbits long 右移位数
返回值: long 右移指定位数后的值
功能描述:数值按位右移
*******************************************************************/
ulong ll_return,ll_pos
string ls_value
//转成二进制
ls_value = inv_numerical.of_binary(al_oldvalue)
if al_oldvalue < 0 then
ls_value = midw(ls_value,2,lenw(ls_value))
ls_value = inv_numerical.of_bitwisenot(ls_value)
//低位加1
//ll_pos = lastpos(ls_value,'0')
if ll_pos = 0 then
ls_value = fill('0',lenw(ls_value))
else
ls_value = leftw(ls_value,ll_pos - 1) + '1' + fill('0',lenw(ls_value) - ll_pos)
end if
ls_value = fill('1',32 - lenw(ls_value)) + ls_value
ll_return = inv_numerical.of_decimal(ls_value)
else
ll_return = al_oldvalue
end if
ll_return = long(ll_return / this.of_m2power(al_shiftbits))
//转成二进制
ls_value = inv_numerical.of_binary(ll_return)
if ll_return < 0 then
ls_value = midw(ls_value,2,lenw(ls_value))
ls_value = inv_numerical.of_bitwisenot(ls_value)
//低位加1
//ll_pos = lastpos(ls_value,'0')
if ll_pos = 0 then
ls_value = fill('0',lenw(ls_value))
else
ls_value = leftw(ls_value,ll_pos - 1) + '1' + fill('0',lenw(ls_value) - ll_pos)
end if
ls_value = fill('1',32 - lenw(ls_value)) + ls_value
ll_return = inv_numerical.of_decimal(ls_value)
end if
ll_return = inv_numerical.of_bitwiseand(ll_return,-1)
return ll_return
end function
private function string of_wordtohex (readonly long al_value);
/*******************************************************************
函数名称:of_wordtohex()
参数: al_value long 原值
返回值: string 转化为十六进制后的值
功能描述:将数字转为十六进制值
*******************************************************************/
string ls_return,ls_temp
long ll_temp,ll_count
ls_return = ''
ll_count = 0
do while ll_count < 4
ll_temp = inv_numerical.of_bitwiseand(this.of_rshift(al_value,ll_count * 8),255)
choose case integer(ll_temp / 16)
case 0 to 9
ls_temp = string(integer(ll_temp / 16))
case 10
ls_temp = 'a'
case 11
ls_temp = 'b'
case 12
ls_temp = 'c'
case 13
ls_temp = 'd'
case 14
ls_temp = 'e'
case 15
ls_temp = 'f'
case else
ls_temp = ''
end choose
ls_return = ls_return + ls_temp
choose case mod(ll_temp,16)
case 0 to 9
ls_temp = string(mod(ll_temp,16))
case 10
ls_temp = 'a'
case 11
ls_temp = 'b'
case 12
ls_temp = 'c'
case 13
ls_temp = 'd'
case 14
ls_temp = 'e'
case 15
ls_temp = 'f'
case else
ls_temp = ''
end choose
ls_return = ls_return + ls_temp
ll_count = ll_count + 1
loop
return ls_return
end function
on nvo_md5.create
call super::create
TriggerEvent( this, "constructor" )
end on
on nvo_md5.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -