ModHex Encoding
ModHexEncoding is the modified-hex encoding used by Yubikey and similar hardware: it maps the nibbles 0-F to the letters c, b, d, e, f, g, h, i, j, k, l, n, r, t, u, v so the output is always a valid US-English keyboard sequence.
It derives from System.Text.Encoding, so anywhere an Encoding is accepted will take it.
Usage
csharp
using Servus.Encoding;
// Singleton instance
var encoding = ModHexEncoding.ModHex;
string modhex = ModHexEncoding.ConvertFromAscii("servus"); // "ifjjjk..."
string ascii = ModHexEncoding.ConvertToAscii(modhex); // "servus"As a standard Encoding
csharp
byte[] bytes = ModHexEncoding.ModHex.GetBytes("cbcbcbcb");
string text = ModHexEncoding.ModHex.GetString(bytes);API
csharp
public class ModHexEncoding : System.Text.Encoding
{
public static ModHexEncoding ModHex { get; }
public static string ConvertFromAscii(string ascii);
public static string ConvertToAscii(string modHex);
// Plus standard Encoding overrides:
// GetByteCount, GetBytes, GetCharCount, GetChars,
// GetMaxByteCount, GetMaxCharCount
}When you'd reach for this
- Parsing or generating Yubikey OTPs.
- Any hardware that emits data as US-English keystrokes to avoid keyboard-layout issues.
