検索

ホームページ  >  に質問  >  本文

java - 需要一个加密,验证算法

/**
获取随机密码
date的格式是年月日yymmdd,privatyKey为10位左右的字母数字组合串
1.需要返回8位纯数字
2.须使用date,privatyKey来生成
3.每次调用都是随机生成的(在date、privatyKey相同的情况下,返回的结果也要不同),尽量保证低重复率
**/
getPassword(date,privatyKey){

}

/**
检测密码
getPassword生成的密码可以通过检测,随便输入的密码通不过检测
**/
checkPassword(date,privatyKey,password){

}

有什么合适的算法?

PHPzPHPz2806日前823

全員に返信(6)返信します

  • ringa_lee

    ringa_lee2017-04-18 10:54:04

    リーリー

    避けられない問題: 8 桁の数字 (1e8 或 2^30) に保存できるものが少なすぎます。
    したがって、この方法は枯渇に対してほぼ完全に耐性があります。攻撃者は最初の 3 ビットを修正し、最後の 5 ビットを枯渇させるだけで済みます。
    利用する場合はアルゴリズム自体を秘密にするか、試行回数などの制限を加える必要があります。


    疲労の難易度をわずかに高めるバリエーション:

    リーリー

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:54:04

    既製のハッシュ関数 (sha256 など) を使用して (date, pkey) を操作できます。結果は通常、8 桁の純粋な数値情報をはるかに超えます。この情報を小さな部分に分割し、1 つの部分をランダムに返します。

    リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:54:04

    MD5を使ってみる

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:54:04

    毎回異なる結果を返したい場合は、TripleDes を使用できます

    ただし、結果は 8 桁の純粋な数値のみになるため、十分です

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:54:04

    md5、openssl は比較的シンプルです

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:54:04

    最後の解決策は、ハッシュ化後の値の一部を取得することです

    返事
    0
  • キャンセル返事