开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1418|回复: 7
收起左侧

[已解决] 会PHP的大神帮忙看下这个用易语言怎么实现

 关闭 [复制链接]
结帖率:100% (12/12)
发表于 2016-8-31 18:32:31 | 显示全部楼层 |阅读模式   江苏省常州市
20精币
如题:php代码:

function getkey(){
                $key = 185025305;
                $val = getror(time(),$key % 17);
                $val = $val ^ $key;
                return $val;
        }

function getror($val,$key)
        {
                $i = 0;
                while($i < $key){
                        $val = (0x7fffffff & ($val >> 1)) | (($val & 1) << 31);
                        ++$i;
                }
                return $val;


这个什么算法,易语言如何实现。

最佳答案

查看完整内容

[e=4].版本 2 .支持库 spec 调试输出 (getkey ()) .子程序 getkey, 整数型 .局部变量 val, 整数型 .局部变量 key, 整数型 key = 185025305 val = getror (取启动时间 (), key % 17) val = 位异或 (val, key) 返回 (val) ' function getkey(){ ' $key = 185025305; ' $val = getror(time(),$key % 17); ' $val = $val ^ $key; ' return $val; ' } .子程序 getror, 整数型 .参数 val .参数 key .局部变量 i, 整数型 i = 0 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:0% (0/1)
发表于 2016-8-31 18:32:32 | 显示全部楼层   湖南省长沙市
  
调试输出 (getkey ())
子程序名返回值类型公开备 注
getkey整数型 
变量名类 型静态数组备 注
val整数型 
key整数型 
key = 185025305
val = getror (取启动时间 (), key % 17)
val = 位异或 (val, key)
返回 (val)
' function getkey(){
' $key = 185025305;
' $val = getror(time(),$key % 17);
' $val = $val ^ $key;
' return $val;
' }
子程序名返回值类型公开备 注
getror整数型 
参数名类 型参考可空数组备 注
val 
key 
变量名类 型静态数组备 注
i整数型 
i = 0
判断循环首 (i < key)
val = 位或 (位与 (十六进制 (“7fffffff”), 右移 (val, 1)), 左移 (位与 (val, 1), 31))
i = i + 1
判断循环尾 ()
返回 (val)
' function getror($val,$key)
' {
' $i = 0;
' while($i < $key){
' $val = (0x7fffffff & ($val >> 1)) | (($val & 1) << 31);
' ++$i;
' }
' return $val;



i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2016-8-31 20:00):
这是根据系统时间生成key

点评

顺便帮忙这个,当然不帮一样选你private long GenerateKeyRor(long value, int key) { int i = 0; while (i < key) { value = ((uint)(value) >> 1) + ((value & 1) << 31); ++i; } re   江苏省常州市  发表于 2016-8-31 20:07

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (4/4)

签到天数: 6 天

发表于 2016-8-31 19:05:47 | 显示全部楼层   上海市上海市
你照做这个逻辑写两个方法就可以了

点评

能用易语言写一个吗,我不懂PHP   江苏省常州市  发表于 2016-8-31 19:25
回复

使用道具 举报

结帖率:100% (12/12)

签到天数: 7 天

 楼主| 发表于 2016-8-31 20:08:56 | 显示全部楼层   江苏省常州市
回复楼上:
private long GenerateKeyRor(long value, int key)
{
        int i = 0;
        while (i < key)
        {
                value = ((uint)(value) >> 1) + ((value & 1) << 31);
                ++i;
        }
        return value;
}


private long GetKey(int stime)
{
        int key = 773625421;
        long value = GenerateKeyRor(stime, key % 13);
        value ^= key;
        value = GenerateKeyRor(value, key % 17);
        return value;
}
这个怎么弄,谢谢
回复

使用道具 举报

结帖率:0% (0/1)
发表于 2016-8-31 20:39:26 | 显示全部楼层   湖南省长沙市
风中的玫瑰 发表于 2016-8-31 20:08
回复楼上:
private long GenerateKeyRor(long value, int key)
{
  
调试输出 (GetKey_ (取启动时间 ()))
子程序名返回值类型公开备 注
GetKey_长整数型 
参数名类 型参考可空数组备 注
stime整数型
变量名类 型静态数组备 注
val长整数型 
key整数型 
key = 773625421
val = GenerateKeyRor (stime, key % 13)
val = 位异或 (val, key)
返回 (val)
' private long GetKey(int stime)
' {
' int key = 773625421;
' long value = GenerateKeyRor(stime, key % 13);
' value ^= key;
' value = GenerateKeyRor(value, key % 17);
' return value;
' }
子程序名返回值类型公开备 注
GenerateKeyRor长整数型 
参数名类 型参考可空数组备 注
value长整数型
key 
变量名类 型静态数组备 注
i整数型 
i = 0
判断循环首 (i < key)
value = 右移 (到整数 (value), 1)左移 (位与 (value, 1), 31)
i = i + 1
判断循环尾 ()
返回 (value)
' private long GenerateKeyRor(long value, int key)
' {
' int i = 0;
' while (i < key)
' {
' value = ((uint)(value) >> 1) + ((value & 1) << 31);
' ++i;
' }
' return value;
' }



i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2016-8-31 20:40):
还是根据系统时间生成key
回复

使用道具 举报

结帖率:27% (4/15)
发表于 2016-8-31 21:02:40 | 显示全部楼层   北京市北京市
经过测试和PHP代码结果一致,望采纳,这个完全靠易语言原生支持库,不用模块

  
窗口程序集名保 留  保 留备 注
程序集_入口   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
输入文本型 
标准输出 (1, “当前时间戳:”到文本 (time ()) + #换行符“getkey()结果为:”到文本 (getkey ()))
返回 (0) ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
getkey整数型 
变量名类 型静态数组备 注
key整数型 
val整数型 
time整数型用于测试
' function getkey(){
' $key = 185025305;
' $val = getror(time(),$key % 17);
' $val = $val ^ $key;
' return $val;
' }
key = 185025305
time = time ()
' time = 1548912121546 '用于测试,把这个值和PHP代码设置成一样的话如果输出一样证明正确
val = getor (time, key % 17)
val = 位异或 (val, key)
返回 (val)
子程序名返回值类型公开备 注
getor整数型 
参数名类 型参考可空数组备 注
val整数型
key整数型
变量名类 型静态数组备 注
i整数型 
' function getror($val,$key)
' {
' $i = 0;
' while($i < $key){
' $val = (0x7fffffff & ($val >> 1)) | (($val & 1) << 31);
' ++$i;
' }
' return $val;
' 0x7fffffff 的十进制为 2147483647
i = 0
判断循环首 (i < key)
val = 位或 (位与 (2147483647, 右移 (val, 1)), 左移 (位与 (val, 1), 31))
i = i + 1
判断循环尾 ()
返回 (val)
子程序名返回值类型公开备 注
time双精度小数型 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
变量名类 型静态数组备 注
time整数型 
time = 取时间间隔 (取现行时间 (), 到时间 (“1970/1/1 00:00:00”), #秒 )
time = time - 8 × 3600 ' 因为中国在东八区,所以要减去八个小时
返回 (time)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表