1. 前兩天和考拉海購和UC做ios廣告的app分發(fā)對接,需要按照要求使用MD5加密返回32位加密字符串疼约。
2. 測試通過后就在線上投放廣告了。奇怪的是偶爾會收到恢復說sign驗證失敗。百思不得其解谬盐。
3. 和我們組員討論了一下,使用在線md5驗證sign诚些,發(fā)現(xiàn)報錯的sign都是31位的飞傀,且都是第一位丟掉了一個0.
4. 我這就覺得搞笑了皇型,那就是md5加密返回的BigInteger先丟失了頭部的0,然后轉換成String就變成這樣了砸烦?
5. 趕緊加個while(str.length()<32){str="0"+str;} 先解決線上問題再說弃鸦。
6. 我一直不敢相信sign丟掉了一位是因為,我使用echo $str|wc -c 測試了長度的啊幢痘,一直是32啊唬格。
7. 結果自己輸了好幾遍終于確定wc命令的輸出就是會比實際的字符串長度多一位!最終還找到了網(wǎng)上的wc的bug記錄颜说。
8. 那么問題來了购岗,如何最快的計算出字符串的長度?進過努力门粪,最終我迎接來了春天:
alias len='func_strlen(){ str=$@;echo ${#str};};func_strlen $@'
9. 使用如下: len "hi dick"