|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2018/2/1 11:41:24 |
标题: |
乐视一段PHP代码密钥算法,改成Delphi,请教各路大神,先谢过:) |
浏览:1459 |
|
加入我的收藏 |
楼主: |
对PHP基本一窍不通,所以只能来论坛问问,是乐视电视的一个接口:
private function parse(<密钥>) { return substr(base64_encode(substr(date('Y/m/d H-i-s', <time>), 0, 4) . <密钥> . substr(date('Y/m/d H-i-s', <time>), 4, count(str_split((String) date('Y/m/d H-i-s', <time>))) - 1)), -7); }
我们的这个软件需要调用它的接口,每个接口都需要传入这个函数返回的结果。
----------------------------------------------
- |
作者: |
|
2018/2/1 12:34:04 |
1楼: |
从 0 开始 4 个,那不就是 年份吗 从 4 开始 的剩余部分,不就是 月日 时分秒吗? substr -7 应该是取后 7 个字符。
乐视不是倒了吗?
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/2/1 15:28:21 |
2楼: |
这样搞? function le20_parse(): string; var sToBase64Value, sBase64: string; beBase64: TIdEncoderMIME; begin sToBase64Value := LeftStr(FormatDatetime('YYYY/MM/DD', Now), 4) + <密钥> + Copy(FormatDatetime('YYYY/MM/DD HH-MM-SS', Now), 5, 20); beBase64 := TIdEncoderMIME.Create; try sBase64 := beBase64.EncodeString(sToBase64Value); // 对数组进行编码 Result := RightStr(sBase64, 7); // beBase64.Encode(InStream, OutStream); // 对内存流进行编码 finally beBase64.Free; end; end;
----------------------------------------------
-
|
作者: |
|
2018/2/1 16:56:12 |
3楼: |
就怕你的 密钥 带有 双子节的数据。 鬼知道 php 的 base64 采用什么编码的。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/2/1 23:14:14 |
4楼: |
挺坑爹的代码。。 反复的用date('Y/m/d H-i-s', <time>)也不知道几个意思。。 还有这个地方count(str_split((String) date('Y/m/d H-i-s', <time>))) - 1 要计算字符串长度直接用strlen或者mb_strlen不就完了么。。。
base64倒是一般不会有问题。不过一般这类动态语言用的都是utf8编码。在处理字符串的时候注意一下编码一般就不会有问题。
----------------------------------------------
--
|
|