c 中自定義Base16編碼解碼的方法示例

2022-09-26 03:51:11 字數 2262 閱讀 4642

一、自定義base16編碼原理

base16編碼跟base64編碼原理上有點不同,當然前面轉換是一樣的,都是是將輸入的字串根據預設編碼轉換成乙個位元組序列,而這個位元組序列裡面其實就是存的ascii碼,其次,將每個ascii碼轉換成8位二進位制,每個八位二進位制拆分成4位一組的二進位制,然後將每4位一組的二進位制轉換成十進位制, 最後,根據十進位制的數字索引密文下標的字元,將這些字串聯起來就是編碼的字串。

例子:abc

ascii碼:          97                  98                    99

二進位制:     01100001  &  01100010        01100011

拆分成四位一組:     0110   0001   0110   0010   0110  0011

十進位制:       6         1   &mclazgfnbsp;     6          2         6         3

根據十進位制索引密文下標中的字元,下面是編碼的**

///

/// 自定義base16編碼

///

/// 需要編碼的字串

/// 自定義base16編碼陣列,16個元素,可以為數字、字元、特殊符號,若不填,使用預設的base16編碼陣列,解碼與編碼的base16編碼陣列一樣

///

public static string autobase16encrypt(string str, string autocode)

; system.collections.arraylist arr = new system.collections.arraylist(system.text.encoding.default.getbytes(str));

for (int i = 0; i < arr.count; i++)

return stren.tostring();

}二、自定義base16解碼原理

其實解碼原理也很簡單了,首先,將編碼的字串拆分成字元,其次,根據字元尋找到第乙個和第二個字元的下標值。將第乙個下標值轉換成8位二進位制,然後左移4位,與第二個字元的下標值合成乙個位元組,儲存在位元組陣列裡,最後,將儲存好的位元組陣列根據預設編碼轉換成字串。(解碼我就不詳加解釋了)下面是解碼的**

///

/// 自定義base16解碼

///

/// 需要解碼的字串

/// 自定義base16編碼陣列,16個元素,可以為數字、字元、特殊符號,若不填,使用預設的base16編碼陣列,解碼與編碼的base16編碼陣列一樣

///

public static string autobase16decrypt(string str, string autocode)

; byte data = new byte[strlength / 2];

for (int i = 0, j = 0; i < data.length; i++, j++)

dnstr = encoding.default.getstring(data);

return dnstr;

}三、base16編碼陣列解析

最後說一下這個編碼陣列,這個編碼陣列呢,是乙個字串陣列,元素總數不能小於16個,當然超過16個元素,也用不上,這16個字元完全自定義,這個比較靈活,最後給大家看乙個隨機編碼陣列的函式。

///

/// 隨機編碼陣列

///

///

public string randomencrypt()

if (!array.exists(code, string.isnullorempty) && code.length == 16)

break;

}return code;

}c# 16進製制轉換為base64字串

matchcollection mc = regex.matches(retrunvalue.tostring(), "[a-f0-9]");

byte bytes = new byte[mc.count];

for (int i = 0; i < mc.count; i++)

retrunvalue = convert.tobase64string(bytes);

總結我寫的這個base16編碼解碼,其實很簡單了,原理也很簡單,適合初學者學習體驗,當然這個編碼解碼可以擴充套件,如果哪位高手或者前輩有新的思路或者想法,請告知,謝謝。

本文標題: c#中自定義base16編碼解碼的方法示例

本文位址:

C 中Base64之編碼,解碼方法

1 base64 to string string strpath ahr0cdovlziwmy44ms4yos40njo1ntu3l1 9iywlkds9yaw5ncy9tawrplziwmda3mzgwlte2lm1pza byte bpath convert.frombase64string ...

C 中自定義異常

在寫方法時,是否遇見資料輸入的錯誤呢.如果字串格式不能轉換成整型的什麼.不過處理這些錯誤的異常,net已經都幫我們寫好了.但是如果乙個字串輸入你想判斷他是不是二進位制數.這種異常你會怎麼處理呢,返回乙個錯誤標識嗎?如果你寫的函式是二進位制轉換成十進位制 返回的值是整型.這個錯誤返回值如果標識呢.哈哈...

C 中如何自定義事件

c 中如何 自定義事件?wason zhuhai 本次只用乙個例項,來說明在c 中如何使用 自定義事件。寫乙個類,此類包含了 自定義事件 onsendmsg。檔名 chatserver.cs public class chatserver 檔名 form1.cs 類事件的處理 如下 private ...