日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言将十进制转化为二进制算法_base64算法初探即逆向分析

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言将十进制转化为二进制算法_base64算法初探即逆向分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

算法分析

雖說base64嚴(yán)格意義上來說并不能算是加密算法,但的確應(yīng)用方面來說還算是比較廣,在CTF的算法逆向中Base系列算是也比較常見的,萌新剛開始學(xué)算法,就以base64為例,對該算法進(jìn)行一個簡單的分析。

簡單來說,base64算法就是根據(jù)一個base64表,將原始字符的值一一替換。替換規(guī)則如下:

  • 首先將每三個字節(jié)劃分為一組,得到24個二進(jìn)制位
  • 然后將這24個二進(jìn)制位劃分為4組,得到4組6個二進(jìn)制位的大小
  • 在每組前面添加兩個00,擴(kuò)展成32個二進(jìn)制位,也就是四個字節(jié)。
  • 根據(jù)base64的表格對照替換得到base64編碼
    表格如下:
  • 定義為字符串?dāng)?shù)組如下:

    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

    如果需要編碼的字節(jié)不能被三整除,則會多出1個或2個字節(jié),處理方式是加上"="號,也就是平時我們看到的base64編碼最后的"="或者"=="

    代碼實現(xiàn)

    根據(jù)前面的算法分析,已經(jīng)知道了base64具體的算法實現(xiàn),接下來使用c語言實現(xiàn)它。
    首先需要定義一個base64的字符串?dāng)?shù)組,用于替換。

    還是回到這張圖

    首先我們需要將第一個字母G的二進(jìn)制位從8位截取到6位,我能想到的最直接的方法就是直接移位,將G>>2,前面自動補(bǔ)0則會得到00010001,也就是索引17,對應(yīng)base64的表格得到字母R,第一個字母就替換完成了。

    很明顯編碼的第二個值是由G的最后兩個二進(jìn)制位和u的前面四個二進(jìn)制位拼接起來的,也就是說接下來應(yīng)該將這兩部分組合起來。

    如何得到第一個字母的最后兩個字節(jié)呢,也是采用移位的方式:

    首先將第一個字母左移4位得到01110000,我們這里需要取第一位的最后兩位,也就是這里的第三四位。所以將01110000與0x30(十進(jìn)制48,二進(jìn)制00110000)得到:


    接下來將第二個字節(jié)的前四個二進(jìn)制位拼接過來即可。

    同樣的,先將第二個字節(jié)右移四位以此得到需要拼接的部分。然后以類似的思路處理第三個字節(jié)。處理完畢將會得到新的四個字符。

    完整流程大致如下:

    完整代碼如下:

    同理,解密函數(shù)需要四個字節(jié)一次性處理,邏輯一樣。

    我使用了原生的c語言實現(xiàn),代碼如下:

    在main函數(shù)中調(diào)用:

    結(jié)果如下:

    將結(jié)果拿到base64網(wǎng)頁解密:

    通過分析過程,我們可以得知base64加解密中我們可控制也最方便控制的是base64的加密表。我們修改base64的加密表即可以實現(xiàn)base64的變異加密,實現(xiàn)起來非常很簡單。
    將之前的base_table修改為如下:
    before:

    然后運行程序即可得到:


    然后到網(wǎng)絡(luò)上使用base64解密工具進(jìn)行解密將解密失敗。

    本文由看雪論壇 顧何 原創(chuàng)

    原文鏈接:[原創(chuàng)]base64算法初探即逆向分析-『密碼算法』-看雪安全論壇

    總結(jié)

    以上是生活随笔為你收集整理的c语言将十进制转化为二进制算法_base64算法初探即逆向分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。