#include stdio.h
成都創(chuàng)新互聯(lián)公司長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為水磨溝企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,水磨溝網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
#include stdlib.h
#include time.h //用到了time函數(shù)
int main()
{ int i,number;
srand((unsigned) time(NULL)); //用時間做種,每次產(chǎn)生隨機(jī)數(shù)不一樣
for (i=0; i50; i++)
{
number = rand() % 101; //產(chǎn)生0-100的隨機(jī)數(shù)
printf("%d ", number);
}
return 0;
}
了解如何使用Go加密和解密數(shù)據(jù)。 請記住,這不是一門關(guān)于密碼學(xué)的課程,而是一門用Go語言實(shí)現(xiàn)的課程。
你有一個文件和一個密碼,并且想要使用密碼對文件進(jìn)行加密。
有很多加密算法。
本章介紹如何在GCM模式下使用對稱算法AES(高級加密標(biāo)準(zhǔn))。
GCM模式同時提供加密和身份驗(yàn)證。
未經(jīng)身份驗(yàn)證,攻擊者可能會更改加密字節(jié),這將導(dǎo)致解密成功但數(shù)據(jù)損壞。 通過添加身份驗(yàn)證,GCM模式可以檢測到加密數(shù)據(jù)已損壞。
對稱意味著我們可以使用相同的密碼來加密和解密數(shù)據(jù)。
AES使用16個字節(jié)的密鑰作為密碼。 人類喜歡任意長度的密碼。
為了支持人類,我們需要從人類密碼派生AES密鑰。 這比看起來要難,因此應(yīng)該使用經(jīng)過充分研究并被認(rèn)為是加密安全的方法之一。 這些方法之一是scrypt密鑰派生功能。
加密是一個棘手的主題,犯一個錯誤就會使攻擊者破壞加密并解密文件。
將人可讀的密碼轉(zhuǎn)換為隨機(jī)加密密鑰非常重要。
人傾向于只使用可能的字節(jié)子集作為密碼,這使得它們更容易破解。
Scrypt被認(rèn)為是一種通過人工密碼生成加密密鑰的好算法。 可見,它還使用了一個鹽值,你應(yīng)該對其保密。
AES算法有多種變體。 我們之所以選擇GCM,是因?yàn)樗Y(jié)合了身份驗(yàn)證和加密功能。 身份驗(yàn)證檢測加密數(shù)據(jù)的修改。
為了使加密更強(qiáng),GCM模式需要額外的隨機(jī)字節(jié)。 我們選擇為每個文件生成唯一的隨機(jī)數(shù),并將其存儲在加密數(shù)據(jù)的開頭(隨機(jī)數(shù)不必是秘密的)。
一種替代方法是僅生成一個隨機(jī)數(shù)并將其用于所有文件。
math/rand 中的所有整數(shù)函數(shù)都生成非負(fù)數(shù).
示例 main.go
執(zhí)行
同理,需要int64 int32類型的隨機(jī)數(shù)只要修改隨機(jī)函數(shù)
但是需要注意 math/rand 幾個函數(shù)的取值區(qū)間!如Intn的范圍[0, n)。[0,20),20會取不到
我自己的需求這樣寫已足夠
const NUM int = 100
for i := 0; i NUM; i += 1 {
rand.Seed(int64(i))
fmt.Printf("%d\t", rand.Int63n(int64(NUM)))
}
其實(shí)在循環(huán)里面這點(diǎn)時間間隔,納秒也是跟不上的。
還有,你用sleep的方法肯定是不能接受的?。?!