【问题标题】:How to encrypt numbers to another number? [duplicate]如何将数字加密为另一个数字? [复制]
【发布时间】:2014-01-21 07:53:54
【问题描述】:

有很多从 0-.... 开始的数字 而且我们不想向任何人显示这个订购的 ID 我们必须在某个地方给出唯一的数字,所以 如何将数字编码为另一个数字。

每个编码的数字都只能代表一个数字。就像加密不是散列一样。 我们还需要唯一性意味着如果 56 给出 842,那么其他人不应该给出 842。

这里有 C# 的类似问题 Encrypt a number to another number of the same length 但是我们如何在 php 中做到这一点

谢谢。

【问题讨论】:

  • 我猜MarcB给出的答案是PHP。
  • 如果您确实需要一些唯一的数据库 ID,然后创建一个通过 sha256 运行一次的唯一 ID,并将其用作主键或您检索的其他索引列。无论如何,您可能不需要反转这个数字。你只需要让它变得不可预测。在您的情况下,哈希冲突是可以忽略的(据我所知,您的情况)。如果这对你来说确实是一个硬性要求,你将需要一些数字表示

标签: php encryption


【解决方案1】:

我不知道为什么人们通过发明自己的加密系统来过度复杂化事情,这可能不是好的或不必要的。

PHP 为您提供 mcrypt:http://de3.php.net/mcrypt 一种以强大的加密方式加密和解密某些内容的好方法。

注意:Base64 不是一个好的解决方案,因为它没有加密

编辑:不建议再次依赖某些用户创建的加密。它没有经过很好的测试,并且部分依赖于默默无闻的安全性。 尽管 mcrypt 需要对 mcrypt api 进行一些调用,但它允许您使用加密强大的系统,例如 MCRYPT_RIJNDAEL_256MCRYPT_TWOFISH256 等。

我对您的安全要求一无所知,但永远不要再次发明轮子。当您在此类事情上犯了错误时,您不会注意到,因为恶意用户不会告诉您,只会利用您的系统。

https://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own

【讨论】:

  • 可以用 mcrypt 做到这一点吗?好的,让我了解一下 mcrypt
  • 我同意你的看法..我不想自己做这就是我在这里问的原因....因为我知道我可以偷偷地做像 (($i*454)-475) 这样的东西等等等等,但我想要强大而可靠的东西......我只是讨厌重新发明轮子
【解决方案2】:

如果是 PHP,您可以使用 base64_encodebase64_decode

例如:

<?php
$order_id = "123";
$enc=base64_encode($order_id);//MTIz
echo base64_decode($enc);//123
?>

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2013-08-07
    • 2016-08-02
    • 2015-06-09
    • 2015-08-22
    • 1970-01-01
    • 2019-07-04
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多