左耳聽風 第三十一周

2021-09-24 05:47:34 字數 1791 閱讀 3205

每週完成乙個arts: 每週至少做乙個 leetcode 的演算法題、閱讀並點評至少一篇英文技術文章、學習至少乙個技術技巧、分享一篇有觀點和思考的技術文章。(也就是 algorithm、review、tip、share 簡稱arts)

繼續按順序來完成「leetcode」前 200 題

leetcode13. 羅馬數字轉整數

leetcode14. 最長公共字首

what devs need to know about encoding / encryption / hashing / salting / stretching 「關於編碼、加密、雜湊、加鹽、秘鑰延伸」

作者對資料加密方面的知識進行了普及:

首先是指出編碼和加密的不同。編碼,是對特定**的加工。而「加密」,是把資料轉化為特定格式的過程,加密需要鑰匙來加鎖或解鎖,只有少部分人可以看到真實的資料(例如:管理員),大部分人只能看到加密的文字。

加密又可以分為兩大類:symmetric key encryption(對稱秘鑰加密),即加密和解密用相同的鑰匙,最常用的加密方式;asymmetric key encryption(非對稱秘鑰加密),加密和解密用不同的鑰匙,最著名的應用就是 https 。

非對稱加密」常用的方式就是hash + salt,雜湊函式可以幫助我們生成定長的加密資料,但是單純的 hash 函式可以被黑客用彩虹表等破解,這就需要我們 salting(加鹽) 了,即在原始資料中摻雜其他資料,使得黑客不能直接通過「撞庫」來得到明文密碼以及加密的方式。

stretching 秘鑰延伸,是進一步加密,最簡單的實踐就是在加密後,再對已加密的資料重複加密,最終得出複雜的加密檔案,若黑客想要破解密碼,就需要在原有加密時間上花上指數倍時間破解,甚至在理論時間上無法破解。

說了這麼多,為什麼要對資料庫加密?直接目的就是抵禦「黑客」的攻擊,避免資料庫洩露,造成公司以及個人的財務以及隱私的損失。而加密的實質是給黑客增加解密的門檻,讓黑客在理論上無法解密。

根據 review 的文章看了一下 c# sha256 的實踐,將 salt 作為加密的鑰匙對文字進行加密,密碼驗證的時候,實際上是比較二者轉換的 hash 值是否一致。

public

static string encrypt

(string encryptstr,string salt)

static

void

main

(string[

] args)

asp.net mvc 入門

如何入門一門新語言或是一門新技術?

系統性、整體性的學習。可以以官方的參考文件文件為主,再參考一些別人的路線圖(思維導圖),有條件的盡量用英文在谷歌搜尋答案,csdn 上的許多部落格很多時候都有沒有講清楚問題。系統性、整體性的了解知識可以讓你在出現問題的時候快速定位,更好的去解決問題。

看原始碼,多實踐。程式設計是理工科的學科,需要通過實踐才能發現問題。先學習別人的原始碼,在實踐中吸取知識,會讓你真正的對某些概念有所了解,bug 的出現並全是壞事,這只是說明你對某一塊的知識尚未理解,攻克它,你會有新的收穫。當然你不能一味的死磕,可以在網上搜尋自己出現的問題,看看別人是怎麼解決到。如果找不到,說明你還沒找準問題,那就需要找人幫忙了,stack overflow 可以幫你解決問題。

左耳聽風 第三十三周

每週完成乙個arts 每週至少做乙個 leetcode 的演算法題 閱讀並點評至少一篇英文技術文章 學習至少乙個技術技巧 分享一篇有觀點和思考的技術文章。也就是 algorithm review tip share 簡稱arts 繼續按順序來完成 leetcode 前 200 題 leetcode ...

左耳聽風 第三十八周

每週完成乙個arts 每週至少做乙個 leetcode 的演算法題 閱讀並點評至少一篇英文技術文章 學習至少乙個技術技巧 分享一篇有觀點和思考的技術文章。也就是 algorithm review tip share 簡稱arts 繼續按順序來完成 leetcode 前 200 題,以下為個人題解 l...

第三十一周學習生活總結

今天是2019年8月4日,乙個星期多前我爺爺在修廟的時候碰到了,傷的很重,做了手術,進了icu。昨天我媽媽告訴我爺爺還沒有出icu,我也不知道該怎麼辦,小時候家裡面隊我最好的就是爺爺了。原來問媽媽要錢買零食,媽媽總部給我,每個週末爺爺都回來看我們,走的時候,他都會偷偷塞給我五塊錢 真的超級多 期末考...