第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

屏蔽自動(dòng)遞增的主鍵

屏蔽自動(dòng)遞增的主鍵

PHP
回首憶惘然 2021-11-26 16:22:57
目前我有一個(gè) mysql 表,顯示有關(guān)工作機(jī)會(huì)的信息。我有一個(gè)自動(dòng)遞增的主鍵,我想編碼所以它不容易識(shí)別。因此,鍵“1”將被轉(zhuǎn)換為諸如“AE93DZ”之類的簡短內(nèi)容。因此,出于 URL 目的,它不像 somesite.com/view/1Primary Key Unique Id   |   Job Name1                       | Gardening at X2                       | Dishwasher at Y3                       | Etc4                       | Etc主鍵需要能夠被解碼回它的原始鍵,以便我可以搜索數(shù)據(jù)庫,例如,如果用戶要單擊該帖子,則它需要拉出該職位帖子。我曾嘗試使用 Base64 對(duì)密鑰進(jìn)行編碼。public static function encode( $input ){    $salt= "example_salt";    $encrypted_id = base64_encode($input . $salt);;    return $encrypted_id;}public static function decode( $raw ){    $salt = "example_salt";    $decrypted_id_raw = base64_decode($raw);    $decrypted_id = preg_replace(sprintf('/%s/', $salt), '', $decrypted_id_raw);    return $decrypted_id;}加密返回類似OE1ZX1SKJS3KSJNMg==它太長并且包含“=”符號(hào)。
查看完整描述

2 回答

?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為更改 ID 的基數(shù)并添加偏移量可以為您提供一種混淆 ID 的好方法。像這樣的東西:


function obfuscate($number)

{

    $offset = 12345678;

    return strtoupper(base_convert($number + $offset, 10, 36));

}


function deobfuscate($code)

{

    $offset = 12345678;

    return base_convert($code, 36, 10) - $offset;

}

這里1將成為7CLZJ并且9999將成為7CTP9。代碼保證是唯一的。通過轉(zhuǎn)換為基數(shù) 36,代碼將只包含數(shù)字 0...9 和字母 A....Z。


簡單但有效。請(qǐng)$offset在您的班級(jí)中創(chuàng)建一個(gè)字段。


這只會(huì)讓您遠(yuǎn)離 id 的簡單數(shù)字,它對(duì)保護(hù) id 毫無幫助。


如果您認(rèn)為基數(shù)為 36 的序列號(hào)有問題,您可以添加一個(gè)因子。例如質(zhì)數(shù)5197。像這樣:


function obfuscate($number)

{

    $offset = 73074643;

    $factor = 5197;

    return strtoupper(base_convert($factor * $number + $offset, 10, 36));

}


function deobfuscate($code)

{

    $offset = 73074643;

    $factor = 5197;

    return intdiv(base_convert($code, 36, 10) - $offset, $factor);

}

這將使在編號(hào)中看到任何邏輯變得更加困難:


1 = 17ICRK 

2 = 17IGRX 

3 = 17IKSA 

4 = 17IOSN 

5 = 17IST0 


查看完整回答
反對(duì) 回復(fù) 2021-11-26
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

Base64 編碼的值仍然很容易識(shí)別。
您可以創(chuàng)建 ID 的散列,例如$hash = hash('crc32', $input);,但更好的主意是生成 UUID,例如$uuid = uniqid();并使用它而不是 ID

查看完整回答
反對(duì) 回復(fù) 2021-11-26
  • 2 回答
  • 0 關(guān)注
  • 187 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)