代码之家  ›  专栏  ›  技术社区  ›  graham.reeds

使用每个base64字符的句子

  •  7
  • graham.reeds  · 技术社区  · 14 年前

    我正在尝试构造一个句子/字母组合,它将返回每个base64字符,但在单元测试中找不到一个单词。

    到目前为止,我所做的单元测试未能命中处理+和/字符的行。虽然我可以直接在编码器/解码器上使用它们,但最好有一个可读的源代码(base64相当于“快速棕色狗”)。

    4 回复  |  直到 14 年前
        1
  •  9
  •   David Cary    13 年前

    下面是一个Base64编码的测试字符串,其中包括所有64个可能的Base64符号:

    char base64_encoded_test[] =
    "U28/PHA+VGhpcyA0LCA1LCA2LCA3LCA4LCA5LCB6LCB7LCB8LCB9IHRlc3RzIEJhc2U2NCBlbmNv"
    "ZGVyLiBTaG93IG1lOiBALCBBLCBCLCBDLCBELCBFLCBGLCBHLCBILCBJLCBKLCBLLCBMLCBNLCBO"
    "LCBPLCBQLCBRLCBSLCBTLCBULCBVLCBWLCBXLCBYLCBZLCBaLCBbLCBcLCBdLCBeLCBfLCBgLCBh"
    "LCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxLCByLCBzLg==";
    
    char base64url_encoded_test[] =
    "U28_PHA-VGhpcyA0LCA1LCA2LCA3LCA4LCA5LCB6LCB7LCB8LCB9IHRlc3RzIEJhc2U2NCBlbmNv"
    "ZGVyLiBTaG93IG1lOiBALCBBLCBCLCBDLCBELCBFLCBGLCBHLCBILCBJLCBKLCBLLCBMLCBNLCBO"
    "LCBPLCBQLCBRLCBSLCBTLCBULCBVLCBWLCBXLCBYLCBZLCBaLCBbLCBcLCBdLCBeLCBfLCBgLCBh"
    "LCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBuLCBvLCBwLCBxLCByLCBzLg==";
    

    它解码成一个完全由人类可读文本组成的字符串:

    char test_string[] = "So?<p>"
        "This 4, 5, 6, 7, 8, 9, z, {, |, } tests Base64 encoder. "
        "Show me: @, A, B, C, D, E, F, G, H, I, J, K, L, M, "
        "N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \\, ], ^, _, `, "
        "a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s.";
    

    此解码字符串仅包含isprint()可支持的7位ASCII字符(空格通过“~”)的有限范围内的字母。

    既然我这么做了,我就认为这是可能的:-)。

        2
  •  1
  •   adamk    14 年前

    / 在base64编码中 111111

    因为所有ASCII码(可输入和可打印字符)都在0-127范围内(即。 00000000 01111111 DEL 性格。

    如果允许值大于127,则可以有一个可打印但不可键入的字符串。

        3
  •  1
  •   Nate Noonen    14 年前

    在尝试编码/解码时,我打破了一次对单个方法进行单元测试的规则。您可以有单独编码或解码的方法,但判断是否正确的唯一方法是在单个断言中同时使用编码和解码。我将使用以下psuedo代码。

    Generate a random string using Path.GetRandomFilename() this string is cryptographically strong
    Pass the string to the encode method
    Pass the output of the encode to the decode method
    Assert.AreEqual(input from GetRandomFilename, output from Decode)
    

        4
  •  1
  •   a female faust    11 年前

    我想到的,也许不是无用的。需要完全按原样输入:我包括一个链接,指向一个屏幕截图,显示下面所有通常不可见的字符,以及它转换到的Base64数据字符串,以及一个与其中每个64个字符相关的相关统计数据表。


                <HTML><HEAD></HEAD><BODY><PRE>
                Did 
    
                 THE    
    
                  THE QUICK BROWN FOX   
    
                   jump 
    
                    over    
    
                     the    
    
                      lazy  
    
                       dogs 
    
                        or  
    
                         was    
    
                          he    
    
                           pushed   
    
                            ?   
    
                </PRE><B>hmm.</B></BODY><HTML>
    
    
    
    
    
    
                ÿß®Þ~c*¯/
    

    这将编码为Base64字符串:

                PEhUTUw+PEhFQUQ+PC9IRUFEPjxCT0RZPjxQUkU+DQpEaWQJDQoNCiBUSEUJDQoNCiAgVEhFIFFVSUNLIEJST1dOIEZPWAkNCg0KICAganVtcAkNCg0KICAgIG92ZXIJDQoNCiAgICAgdGhlCQ0KDQogICAgICBsYXp5CQ0KDQogICAgICAgZG9ncwkNCg0KICAgICAgICBvcgkNCg0KICAgICAgICAgd2FzCQ0KDQogICAgICAgICAgaGUJDQoNCiAgICAgICAgICAgcHVzaGVkCQ0KDQogICAgICAgICAgICA/CQ0KDQo8L1BSRT48Qj5obW0uPC9CPjwvQk9EWT48SFRNTD4NCg0KDQoNCg0KDQoNCg//367efmMqry/==
    

                5--/'s
                4--+'s
                3--='s
                14--0's
                3--1's
                3--2's
                2--3's
                4--4's
                3--5's
                2--6's
                2--7's
                4--8's
                6--9's
                5--a's
                27--A's
                2--b's
                5--B's
                5--c's
                4--C's
                4--d's
                14--D's
                2--e's
                10--E's
                2--f's
                8--F's
                36--g's
                6--G's
                5--h's
                2--H's
                5--i's
                30--I's
                5--j's
                6--J's
                8--k's
                12--K's
                2--l's
                3--L's
                2--m's
                4--M's
                3--n's
                14--N's
                13--o's
                2--O's
                3--p's
                9--P's
                2--q's
                24--Q's
                2--r's
                5--R's
                2--s's
                6--S's
                2--t's
                7--T's
                2--u's
                1--U's
                3--v's
                6--V's
                4--w's
                5--W's
                3--x's
                6--X's
                2--y's
                4--Y's
                3--z's
                5--Z's