首页 > 语言 > 关键词 > discuz最新资讯 > 正文

discuz 经典php加密解密函数 authcode 解析

2010-02-26 14:28 · 稿源:中国站长站综合

康盛的 authcode 函数可以说对中国的PHP界作出了重大贡献。包括康盛自己的产品,以及大部分中国使用PHP的公司都用这个函数进行加密,authcode 是使用异或运算进行加密和解密。
 
原理如下,假如:

加密

明文:1010 1001

密匙:1110 0011

密文:0100 1010

得出密文0100 1010,解密之需和密匙异或下就可以了

解密

密文:0100 1010

密匙:1110 0011

明文:1010 1001

并没有什么高深的算法,密匙重要性很高,所以,关键在于怎么生成密匙。

那我们一起看下康盛的authcode怎么做的吧

1.  // 参数解释  
2. 
// $string: 明文 或 密文  
3. 
// $operation:DECODE表示解密,其它表示加密  
4. 
// $key: 密匙  
5. 
// $expiry:密文有效期  
6. function authcode($string$operation 'DECODE'$key ''$expiry 0
) {  
7.     
// 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙  
8.     $ckey_length 4
;  
9.       
10.     
// 密匙  
11.     $key md5($key $key $GLOBALS['discuz_auth_key'
]);  
12.       
13.     
// 密匙a会参与加解密  
14.     $keya md5(substr($key016
));  
15.     
// 密匙b会用来做数据完整性验证  
16.     $keyb md5(substr($key1616
));  
17.     
// 密匙c用于变化生成的密文  
18.     $keyc $ckey_length ? ($operation == 'DECODE' substr($string0$ckey_length
):
substr(md5(microtime()), -$ckey_length)) : ''
;  
19.     
// 参与运算的密匙  
20.     $cryptkey $keya.md5($keya.$keyc
);  
21.     $key_length strlen($cryptkey
);  
22.     
// 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),解密时会通过这个密匙验证数据完整性  
23.     
// 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确  
24.     $string $operation == 'DECODE' base64_decode(substr($string$ckey_length
)) :
sprintf('%010d'$expiry $expiry time() : 0).substr(md5($string.$keyb), 016).$string
;  
25.     $string_length strlen($string
);  
26.     $result ''
;  
27.     $box range(0255
);  
28.     $rndkey 
= array();  
29.     
// 产生密匙簿  
30.     for($i 0$i <= 255$i
++) {  
31.         $rndkey[$i] = ord($cryptkey[$i $key_length
]);  
32.     
}  
33.     
// 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度  
34.     for($j $i 0$i 256$i
++) {  
35.         $j = ($j $box[$i] + $rndkey[$i]) % 256
;  
36.         $tmp $box[$i
];  
37.         $box[$i] = $box[$j
];  
38.         $box[$j] = $tmp
;  
39.     
}  
40.     
// 核心加解密部分  
41.     for($a $j $i 0$i $string_length$i
++) {  
42.         $a = ($a 1) % 256
;  
43.         $j = ($j $box[$a]) % 256
;  
44.         $tmp $box[$a
];  
45.         $box[$a] = $box[$j
];  
46.         $box[$j] = $tmp
;  
47.         
// 从密匙簿得出密匙进行异或,再转成字符  
48.         $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256
]));  
49.     
}  
50.     if($operation == 'DECODE'
) {  
51.         
// substr($result, 0, 10) == 0 验证数据有效性  
52.         
// substr($result, 0, 10) - time() > 0 验证数据有效性  
53.         
// substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性  
54.         
// 验证数据有效性,请看未加密明文的格式  
55.         if((substr($result010) == || substr($result010) - time() > 0) &&

substr
($result1016) == substr(md5(substr($result26).$keyb), 016)) {  
56.             return substr($result26
);  
57.         
} else {  
58.             return ''
;  
59.         
}  
60.     
} else {  
61.         
// 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因  
62.         
// 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码  
63.         return $keyc.str_replace('='''base64_encode($result
));  
64.     
}  
65. 

 但是有点遗憾,这个函数所有权属于康盛创想,并不能自由使用的。

  • 相关推荐
  • 大家在看
  • 用php源码搭建二维码加密支付平台

    今天给大家介绍的项目-"用php源码搭建二维码加密支付平台",可以说,有一定的技术门槛,有一定的壁垒,因为需要搭建网站并且运营。正是因为有一定的门槛,需要学习和准备一些东西,才能挡住大多数用户的进入,才能长久的赚取利润。这些技术门槛,和需要准备的一些东西,我今天会详细的,手把手的教大家,如果你肯学习,并且有一定的网络基础,我相信可以很快突破难点,搭建成功。一旦搭建成功,运用一些推广的手段,后期

  • Decoverf皇家帝孚:涂鸦艺术,我想玩的更潮流!

    当家居失去了光鲜亮丽与涂鸦艺术相遇,多点想象力生活变重新恢复了生命力涂鸦作为一种具有大众性、交叉型的流行艺术,其感染力来自于字体的强烈变化和色彩的对比,以个性张扬的态度,颠覆传统的艺术观念及形式,不受诸多条条框框的限制,注重表达内心纯粹的需求。它的青春活力、自由奔放的笔触,不仅仅是一种炫酷的艺术,其本质更是在表达一种释放真我的精神。涂鸦艺术注重作品的视觉传达效果,在设计领域中,涂鸦中的图形流动感和

  • Decoverf皇家帝孚Workshop学术研讨会

    Decoverf皇家帝孚一年一度的Workshop学术研讨会正式开启。现场群英荟萃,行业内专业学者纷纷前来相互探讨学习。Workshop是由Decoverf皇家帝孚组织开办的专业学术研讨会,每年都会邀请一些在欧洲行业内知名的学者、设计师、从业人士等相关人员到场,并会对外开放少量参观名额,邀请感兴趣的消费者免费到研讨会体验、了解皇家帝孚的产品以及文化。Decoverf皇家帝孚开办学术研讨会的宗旨,是为了在行业内搭建一个互相学习、加强沟通、

  • Decoverf皇家帝孚:品质筑家,致敬美好生活!

    在形色匆忙的时代里,忙碌成为都市生活节奏的代名词,对于都市人来说,住宅不仅仅是一间房子,更是家的代名词, 穿梭于车水马龙城市之间,温暖的家作为放松、休憩的港湾,让我们疲惫的心灵彻底释放,从此有了栖息的地方......家需要温度,更需要质量,在人生漫长生命的历程中,将近有一半的时间都是在居住空间度过,所以家庭的装修质量不可忽视,大到家装布局,小到家装材料,每一环节都要严格把控!而在家居空间内,墙面占据着绝大

  • 梅赛德斯(Mercedes)和英伟达(Nvidia)合作建立强大的计算平台

    [TechWeb]梅赛德斯·奔驰(Mercedes-Benz)与英伟达(Nvidia)合作开发用于汽车的下一代计算平台,该平台将支持从空中软件更新到自动驾驶的所有内容。这家德国汽车制造商表示计划从2024年开始在其车队中推广这项新技术。新平台将基于Nvidia的片上系统Orin技术,还将使用基于San Jose的公司完整的Drive AGX软件堆栈。Nvidia 于2019年12月在CES上首次展示了Orin ,除了顶级规格(例如每秒可以进行200万亿次运算,同时使用更少的功率

  • 币安区块101丨Eric Chen&Wayne Lin:Defi让加密资产市值翻十倍

    2020 年 6 月 12 日,币安思思对话Injective Protocol 联合创始人及CEO-Eric Chen & BN Capital Senior Partner-Wayne Lin。Injective Protocol 从 2018 年成立以来,官方公开的过往唯一资金募集为Binance Labs及StartX参与的Pre-Seed轮,且基于美国SEC的Regulation D/S 合规进行私募,市场内未有未经官方同意解锁流通的额度。注意不要相信社区的谣言,留意风险。Eric Chen认为在Defi领域要慢慢从底层开始做起,把模块一直向上搭建

  • TheShy正式入驻快手 theshy快手账号是多少

    6月10日,IG战队正式宣布上单选手TheShy入驻快手,同时也公布了theshy在快手平台的账号ID,对于喜欢theshy的选手,可以前往快手来关注他的动态啦。

  • OKEx上线COMP打响DeFi闪电战,数字货币“场景替代”再下一城

    如今数字货币不再是人们口中的“纸面财富”,随着世界范围内越来越多的品牌和商家支持数字货币交易,这个庞大生态离中本聪的野心又近了一步。但不可否认,行业行至此处继续依靠挖矿和发币,已经不足以支撑数字货币发挥对传统金融的替代作用。DeFi的出现显得水到渠成。DeFi 以区块链等开源技术为叙事方式,将传统金融的各项功能平移至数字货币领域,试图以此扩大数字货币的影响力。也许有人认为这与数字货币“去中心化”的初衷背道?

  • Python取代Excel?风变编程带你了解如何更好地学Python!

    当前最简单、最流行的编程语言是什么?是Python。最近,谷歌公布的编程语言流行指数显示,Python目前仍然是全球范围内最受欢迎的技术语言。而得益于简洁、易读、易维护等特点,Python可广泛运用于数据分析、人工智能、爬虫、运维、测试、图像识别、机器学习等领域,在日常数据分析方面,甚至已有“Python取代Excel”的说法。那么,Python是否真的有这么牛?接下来,风变编程就带你了解一波。“Python已经取代了Excel”今年3月,日?

  • MySQL8.0窗口函数做数据排名统计详细教程

    MySQL8.0新增了窗口函数,大大的方便了做数据排名统计的人,很多朋友还不清楚怎么用MySQL8.0做数据统计排名,下面就来为大家分享一篇文章。

  • 币安区块101对话Multicoin Capital执行董事Mable:加密经济中的3个财富密码

    2020 年 6 月 24 日,币安吴迪对话Multicoin Capital执行董事Mable。Mable认为更符合自己的标签是一个创业者,不管是找投资还是做研究,都需要非常努力以创业者的心态脚踏实地去做。Mable认为Arweave的核心价值在于预付一笔费用之后就可以永久存储数据,从历史来看未来储存的成本会无限压缩趋近于零,所以是可以被假设为免费存储的。Arweave的模型是传统比特币的共识机制,但在上面增加了访问证明(proof-of-access),激励矿工尽?

  • 厌倦一成不变?Decoverf皇家帝孚绮俪思艺术漆带你享受不一样的视觉盛宴!

    如果说钢筋水泥是房子的结构那么墙面艺术就是房子的灵魂美是一种艺术,艺术源于生活,随着现代时尚生活的发展,人们的审美追求更加前卫,在享受高品质生活之余,更渴望体验视觉美感,把艺术融入设计,用质感拉近与空间的距离为,简单平凡的生活注入新鲜活力!自此,墙面不再孤单厌倦了一成不变的生活,也看腻了单调无趣的墙面,总想在平静的生活中,添加一丝与众不同的高级感,Decoverf绮俪思艺术漆,如贝壳般柔和的哑光感,恰到好?

  • 谷歌母公司Alphabet将在收购加拿大AR眼镜制造商North

    6月28日消息,据国外媒体报道,谷歌母公司Alphabet将收购加拿大增强现实(AR)眼镜制造商North。据外媒报道,Alphabet正在就以1.8亿美元价格收购North进行深入谈判,该公司将此次收购视为以最少的投入或现金重新进入消费者智能眼镜市场的简单途径。有消息称,现在North正处于将自己出售给Alphabet的最后阶段。North成立于2012年,它获得了约1.6亿美元的投资,投资方包括英特尔的风险投资部门和Salesforce创始人马克·?

  • 消息称苹果正在对iPhone测试:让其有运行MacOS可能性

    今年WWDC开发者大会上,苹果用实际行动向外界证明,他们正在做桌面、移动的大一统,而这需要硬件去支持,所以才有了ARM版的桌面处理器。据外媒最新报道称,苹果正在研发原型机,在iPhone上运行

  • 加密行业的比尔·盖茨——赵长鹏

    得益于币安赵长鹏的正确领导,币安在全球化道路上遥遥领先于coinbase, huobi ,okex,国际化市场份额取得极其亮眼的成绩。而其首创的平台币BNB,也在平台币中处于龙头地位。目前币安又开启“开放式平台”商业模式,引领区块链行业发展进步。为此,很多人都对赵长鹏充满了疑问,这个神一般的人物到底是什么样的?有人称他为加密行业的比尔·盖茨,因为他不仅在推动加密货币行业的发展,而且正在改变根深蒂固的经济和社会文化。他在

  • 解密国美联手京东、拼多多背后:商战的本质是匹配资源

    国美以两场大交易搅动行业格局。5 月 28 日,京东宣布战略投资国美,以 1 亿美元认购国美零售发行的可转债。就在一个多月前,拼多多也认购了国美零售发行的 2 亿美元可转债。

  • GitHub将替换master、slave等术语 反对种族歧视

    DoNews 6月15日消息(记者 刘文轩)GitHub CEO Nat Friedman在Twitter表示,GitHub将使用中性词如“main”去替换“master”这个让人联想到奴隶制的术语。GitHub 成为最新一个支持移除可能冒犯部分群体的术语的公司。包括“master”和“slave”将被替换为“main/default/primary”和“secondary”,“whitelist”和“blacklist”将被替换为“allow list”和“deny/exclude list”。最近几周,由于“Black Lives Matter”的抗议活动?

  • Python 和 Go 成为年度最受欢迎的黑客工具榜首

    网络安全公司 Imperva Cloud WAF 近期分享了其在 2019 年一年内针对网络安全事件的观察。对数据进行聚类分析后,他们得到了如下结论:

  • “DiDi说泵”推广价格预估,靠谱的自媒体推广平台

    备注:本文数据来自站长之家移动传媒平台,文章涉及的数据依托平台大数据计算所得,非百度官方数据,仅供参考。DiDi说泵是当前百家号中的普通号,目前账号百家号权重为0,综合排名位列1049940名,社会分类排名位列139040名,领先了6.0%的百家号。 DiDi说泵百家号概况 DiDi说泵的简介为八年工业泵实战经验帮你水泵选型!,是一家主旨明确、领域专注的自媒体作者,截止目前为止他们已经在百家号上发布了超过0篇的游戏内容,最近该作?

  • 易美教育前哥大招生官深度解密如何通过矩阵秘籍规划名校申请

    易美教育招生官顾问委员会成员、前哥伦比亚大学招生官阿尔伦女士受邀参加易美教育内部研讨会,为准备申请美国留学的学生们揭秘如何通过矩阵秘籍规划名校申请。在易美教育主办的易美教育-易讲坛线上圆桌会议上,阿尔伦女士针对美国名校的申请审查、录取规则、时间管理等话题为广大易美教育学子和家长答疑解惑。为了能更好地帮助学生,易美教育将内部研讨会内容进行总结,希望带给学生一些指引。易美教育招生官顾问委员会成员、前哥?

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议