[20211011]計算sql_id.sh指令碼的一些補充.txt
[20211011]計算sql_id.sh指令碼的一些補充.txt
--//前幾天改了計算sql_id的指令碼,同時發現一些問題.
--//我的計算如下:
v1=$(echo -e -n "$sql_text" | md5sum | sed 's/ -//' | xxd -r -p | od -t x4 | sed -n -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z')
1.問題1:
--//別人問的問題,為什麼使用md5sum後,還有許多步驟,實際上計算出來的結果還要4個位元組對調一下,才是正確的full_hash_value.
--//對調我使用xxd -r -p | od -t x4完成.
--//我估計與CPU型別有關,INTEL系列的這樣計算沒有問題,其它都沒有環境,無法測試.
2.問題2:
--// md5sum後的過濾 sed 's/ -//'是多餘的.
--//cygwin下執行:
$ echo -e -n a | md5sum
0cc175b9c0f1b6a831c399e269772661 *-
--//linux下執行:
$ echo -e -n a | md5sum
0cc175b9c0f1b6a831c399e269772661 -
--//與linux的對比多出了一個*.
$ echo -e -n a | md5sum | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020
--//如果你仔細檢查發現轉換結果是對的.很明顯*-字元被xxd -r -p 給忽略了.
$ echo -n 0cc175b9c0f1b6a831c399e269772661 | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020
$ echo -n 0cc175b9c0f1b6a831c399e269772661a | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020
$ echo -n 0cc175b9c0f1b6a831c399e269772661az | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020
$ echo -n 0cc175b9c0f1b6a831c399e269772661ab | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020 000000ab
0000021
$ echo -n 0cc175b9c0f1b6a831c399e269772661AC | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020 000000ac
0000021
--//注意看輸出,我在結尾增加a,az,ab.可以發現單個字元a結果不變,加入ab,輸出結果發生變化.
--//結尾加入az,與加入a結果一樣,也就是要對齊邊界.
--//可以發現xxd -r -p僅僅接受16進位制字元0-9,a-f,A-F.
--//最佳方式修改如下:
v1=$(echo -e -n "$sql_text" | md5sum | awk "{print $1}" | xxd -r -p | od -t x4 | sed -n -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z')
$ echo -e -n a | md5sum | awk "{print $1}" | xxd -r -p | od -t x4 | sed -n -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z'
B975C10CA8B6F1C0E299C33161267769
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2795255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20220317]補充完善TPT 顯示欄位列的指令碼.txt指令碼
- PS的一些補充
- MybatisPlus的一些補充MyBatis
- Java的一些基礎補充Java
- KeyShot操作的一些補充
- SQL 的後計算指令碼SQL指令碼
- 計算機補碼儲存計算機
- [20211111]補充完善ash_wait_chains指令碼.txtAI指令碼
- Python的一些進階補充Python
- 計算機原碼, 反碼,補碼的介紹計算機
- 計算機中的補碼與java取反運算計算機Java
- java 原碼、反碼、補碼計算 以及 取反(~)運算Java
- 設計模式學習(一)單例模式補充——指令重排設計模式單例
- Git——關於Git的一些補充(1)Git
- [計組] 計算機編碼方式:原碼、反碼、補碼計算機
- 深入理解計算機中的原碼、補碼、反碼計算機
- 計算機為什麼要用補碼計算機
- [20220330]編寫sql打補丁的指令碼.txtSQL指令碼
- 前端補充:url編碼前端
- 計算機二進位制中的原碼,反碼,補碼計算機
- [20161012]linux free的補充.txtLinux
- [20120601]ITL的問題補充.txt
- Java List 容器原始碼分析的補充Java原始碼
- Bash 指令碼程式設計的一些高階用法指令碼程式設計
- 老碼農教你學英語:補充一些英語學習素材
- [20210813]關於測試sql語句子游標的效能的一些補充說明.txtSQL
- 網路程式設計補充程式設計
- 一些有趣的VBS指令碼指令碼
- oracle dba 的一些指令碼Oracle指令碼
- 為什麼計算機採用補碼進行運算?計算機
- [20211011]變態的windows批處理9.txtWindows
- MySQL 8.0 新密碼策略的細節補充MySql密碼
- 適合時間序列資料的計算指令碼指令碼
- 【MySQL】計算 TPS,QPS 的python 指令碼MySqlPython指令碼
- 搞定計算機網路面試,看這篇就夠了(補充版)計算機網路面試
- 漫談計算機組成原理(八)原碼、補碼、反碼計算機
- 補充行業程式碼欄位行業
- 計算表空間使用率指令碼指令碼