sign unsign
时间: 2024-06-10 19:08:41 浏览: 160
signed和unsigned用于修饰整数类型,signed表示有符号,unsigned表示无符号。有符号数的最大取值要比无符号的小约一半,因为有符号数的最高一位被用来表示符号。默认的int、short、long、long long为有符号数;换言之,int等价于signed int,short等价于signed short,long等价于signed long,long long等价于signed long long。但是char本身是signed char还是unsigned char,取决于语言的实现(编译器)。
unsigned int与int运算的时候,int会被转化为unsigned int来进行运算。这个规则可能是由于unsigned int可以表示更大的正值而定的。但是有些人认为这个规则不符合直觉,因为我们一般不会将unsigned想象成一个负数。
下面是一些常见整数类型的取值范围:
- signed char :[-2^7, 2^7) 即 [-128, 128)
- unsigned char:[0, 2^8) 即 [0, 256)
- signed n位整数:[-2^(n-1), 2^(n-1))
- unsigned n位整数:[0, 2^n)
相关问题
void signText(std::string text, RSA_key priv, unsigned char sign[SIGN_LEN]) { unsigned int signLen; unsigned char hash[SHA256_DIGEST_LENGTH]; if (!SHA256 ((const unsigned char *)text.c_str(), text.size(), hash)) { std::cout << KCYN << "SHA1 failed" << KNRM << std::endl; exit(0); } if (!RSA_sign (NID_sha256, hash, SHA256_DIGEST_LENGTH, sign, &signLen, priv)) { std::cout << KCYN << "RSA_sign failed" << KNRM << std::endl; exit(0); } }
这段代码定义了一个名为signText的函数,用于对文本进行签名。函数接受三个参数:一个字符串text,一个RSA_key结构体priv和一个unsigned char数组sign。
函数内部首先声明了两个变量:signLen用于存储签名的长度,hash用于存储对文本进行SHA256哈希后的结果。
接下来,函数使用SHA256函数对text进行哈希,并将结果存储在hash数组中。如果SHA256函数调用失败,将打印错误信息并退出程序。
然后,函数使用RSA_sign函数对哈希值进行签名,并将签名结果存储在sign数组中。如果RSA_sign函数调用失败,同样会打印错误信息并退出程序。
这段代码的作用是使用私钥对文本进行签名,生成签名结果存储在sign数组中。
bool verifyText(std::string text, RSA_key pub, unsigned char sign[SIGN_LEN]) { size_t signLen = SIGN_LEN; unsigned char hash[SHA256_DIGEST_LENGTH]; if (!SHA256 ((const unsigned char *)text.c_str(), text.size(), hash)) { std::cout << KCYN << "SHA1 failed" << KNRM << std::endl; exit(0); } bool b = RSA_verify(NID_sha256, hash, SHA256_DIGEST_LENGTH, sign, signLen, pub); return b; }
这段代码定义了一个名为`verifyText`的函数,用于验证文本的签名是否有效。函数接受三个参数:一个字符串`text`,一个`RSA_key`结构体`pub`和一个`unsigned char`数组`sign`。
函数内部首先声明了两个变量:`signLen`用于存储签名的长度,`hash`用于存储对文本进行SHA256哈希后的结果。
接下来,函数使用SHA256函数对`text`进行哈希,并将结果存储在`hash`数组中。如果SHA256函数调用失败,将打印错误信息并退出程序。
然后,函数调用`RSA_verify`函数来验证签名。该函数返回一个布尔值,表示验证结果。如果验证成功,则返回`true`,否则返回`false`。
最后,函数返回验证结果。
阅读全文