恶心的openssl。。。
生活随笔
收集整理的這篇文章主要介紹了
恶心的openssl。。。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
惡心的openssl。。。
原文:http://hi.baidu.com/tmy13/item/301eb0db692281e5785daa48
就像我上篇說的那樣,果然只要改動一處地方就大功告成了,但是那一處地方還
真讓我找得蛋疼。且不說我到底是怎么個給搞出來的,那個過程可謂艱辛,真要
說可能會使本文不自覺成為一篇長篇大論,所以這里我就說說一個關鍵的地方,
也是openssl中極其惡心的地方。
以下內容可能涉及技術性內容,路過路過吧。。。
先來看這個函數??
RSA_sign(NID_sha1, m, m_len, sigret, siglen, rsa);
不知道各位看到這里的第一反應是什么?肯定會和我一樣天真的認為 那個是rsa簽名函數,對數據m先做
sha1摘要,再對摘要數據用rsa進行簽名。如果是這樣,那么你也中招了。當然如果你能把函數的文檔說
明一字不漏的仔細看過遍,或許可以明白這個函數真正的用意。但是首先英文非我母語,我理解起來難免
有誤,其次信息安全也并非我專業,我只是臨時用一下而已,有些專業的地方搞不明白也在所難免,而且
還有一點很重要的是我被java中簽名算法所謂的SHA1withRSA給誤導,想當然的以為這兩者其實的功能是
一致的,外加上函數源碼中的i2d_X509_SIG()這個函數產生的誤解,導致我走了不少彎路。
恩,前面找了這么多借口,是時候該說說這個函數本身了,這個函數確實是簽名,而且并不是單純的你傳
什么我就簽什么那種,也不是我前面說的先sha1再rsa,關鍵在于要理解簽名的數據在進行rsa加密之前到
底做了哪些變化。經百度可知,像sha1withRSA這樣的算法,他不僅對明文進行了摘要,還在摘要前添加
了固定個長度的摘要算法標識。而做這個標識的其實就是上面所說的RSA_sign所做的,并且由第一個參數
所指定了算法的類型來告訴函數給你添加哪些類型的標識。
說了這么多其實可以一言以蔽之,就是如果你想做sha1withRSA這樣的算法,那么
RSA_sign函數中第一個參數為NID_sha1,第二第三個參數為明文的sha1摘要及長度
,而并非明文本身。
這個例子告訴我仔細閱讀文檔很重要,當然我到現在還是沒怎么理解。以及有些
時候確實應該靜下心來好好的想一下,而不是盲目的枚舉或判斷可能出問題的
原因。此次事件雖說時間是浪費了不少,而對簽名本身的理解也有了進一步的
認識,不得不說,塞翁失馬,焉知非福。
p.s:狗日的baidu怎么把換行給去掉了???編輯得我苦的來,我擦。。。
俺妹這東西內容倒不怎么樣,人設確實很讓人喜歡,每個都好有愛啊。。。
總結
以上是生活随笔為你收集整理的恶心的openssl。。。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最优非对称加密填充(OAEP)
- 下一篇: Openssl和PKCS#11的故事