首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++实现对16进制字符串和字节数组的tea加密和解密算法

    TEA(Tiny Encryption Algorithm) 是一种简单高效的加密算法,以加密解密速度快,实现简单著称。算法真的很简单,TEA算法每一次可以操作64-bit(8-byte),采用128-bit(16-byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。 TEA 算法最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计的。该算法使用 128 位的密钥为 64 位的信息块进行加密,它需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 - 1)231」(也就是程序中的 0×9E3779B9)。 下面是维基百科中个关于该算法的C语言描述的代码片段,如下:

    02

    strtol函數的用法

    相关函数: atof, atoi, atol, strtod, strtoul 表头文件: #include <stdlib.h> 定义函数: long int strtol(const char *nptr, char **endptr, int base) 函数说明: strtol()会将参数nptr字符串根据参数base来转换成长整型数。参数   base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10   进制(字符串以10进制表示),若base值为16则采用16进制(字符串以16进制表示)   。当base值为0时则是采用10进制做转换,但遇到如''0x''前置字符则会使用16进   制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到   遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(''\0'')结束   转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的   nptr中的字符指针由endptr返回。 返回值:    返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中   。 附加说明: ERANGE指定的转换字符串超出合法范围。     将字符串a, b, c 分别采用10, 2, 16进制转换成数字 ------------------------------------------------ #include <stdlib.h> #include <stdio.h> main() {      char a[] = "100";      char b[] = "100";      char c[] = "ffff";      printf("a = %d\n", strtol(a, NULL, 10)); //100      printf("b = %d\n", strtol(b, NULL, 2));    //4      printf("c = %d\n", strtol(c, NULL, 16)); //65535 }   "100" ---> 100 (Dec) ---> 100 (Dec) "100" ---> 100 (BIN) ---> 4    (Dec) "ffff"---> ffff(Hex) ---> 65535(Dec)

    00

    codeM美团编程大赛初赛B轮E题

    题目描述 给出一个正整数n,我们把1..n在k进制下的表示连起来记为s(n,k),例如s(16,16)=123456789ABCDEF10, s(5,2)=11011100101。现在对于给定的n和字符串t,我们想知道是否存在一个k(2 ≤ k ≤ 16),使得t是s(n,k)的子串。 输入描述: 第一行一个整数n(1 ≤ n ≤ 50,000)。 第二行一个字符串t(长度 ≤ 1,000,000) 输出描述: "yes"表示存在满足条件的k,否则输出"no" 输入例子: 8 01112 输出例子: yes 这里我之前就写了一套可以将任意进制转换为2~62进制的代码,可以直接套用(注意仅针对非负数)。 要注意判断为yes时及时退出,避免无谓的后续计算,这里的思想总体来说属于暴力法,好像也只有这样了(摊手),不过还是要夸夸C++的stl库,效率不错。

    02
    领券