转换C++;Java加密 我有以下C++代码,用XOR。p> #define MPI_CIPHER_KEY "qwerty" Buffer FooClient::cipher_string(const Buffer& _landi
转换C++;Java加密转换C++;Java加密 我有以下C++代码,用XOR。p> #define MPI_CIPHER_KEY "qwerty" Buffer FooClient::cipher_string(const Buffer& _landi,java,c++,encryption,xor,Java,C++,Encryption,Xor,转换C++;Java加密 我有以下C++代码,用XOR。p> #define MPI_CIPHER_KEY "qwerty" Buffer FooClient::cipher_string(const Buffer& _landing_url) { String key(CIPHER_KEY); Buffer key_buf(key.chars(), key.length()); Buffer landing_url_cipher = FooCl
我有以下C++代码,用XOR。p>
#define MPI_CIPHER_KEY "qwerty"
Buffer FooClient::cipher_string(const Buffer& _landing_url)
{
String key(CIPHER_KEY);
Buffer key_buf(key.chars(), key.length());
Buffer landing_url_cipher = FooClient::XOR(_url, key_buf);
Buffer b64_url_cipher;
base64_encode(landing_url_cipher, b64_url_cipher);
return b64_url_cipher;
}
Buffer FooClient::XOR(const Buffer& _data, const Buffer& _key)
{
Buffer retval(_data);
unsigned int klen=_key.length();
unsigned int dlen=_data.length();
unsigned int k=0;
unsigned int d=0;
for(;d<dlen;d++)
{
retval[d]=_data[d]^_key[k];
k=(++k<klen?k:0);
}
return retval;
}
#定义MPI密码密钥“qwerty”
缓冲区FooClient::密码字符串(常量缓冲区和登录url)
{
字符串密钥(密码密钥);
缓冲区键(key.chars(),key.length());
缓冲区登录\u url\u cipher=FooClient::XOR(\u url,key\u buf);
缓冲区b64_url_密码;
base64_编码(登录_url_密码、b64_url_密码);
返回b64_url_密码;
}
缓冲区FooClient::XOR(常量缓冲区和\u数据,常量缓冲区和\u键)
{
缓冲区返回(_数据);
unsigned int klen=_key.length();
unsigned int-dlen=_data.length();
无符号整数k=0;
无符号整数d=0;
对于(d<p>否),java代码只会XOR到较小字符串的长度,而C++代码将完全地XOR整个数据。
假设s1是您的“密钥”,可以通过更改为
for(int i=0; i<s2.length();i++)
sb.append((char)(s1.charAt(i%s1.length()) ^ s2.charAt(i)));
<代码> >(int i=0;i<p>)——java代码只将XOR升到较小字符串的长度,而C++代码将完整地XOR整个数据。
假设s1是您的“密钥”,可以通过更改为
for(int i=0; i<s2.length();i++)
sb.append((char)(s1.charAt(i%s1.length()) ^ s2.charAt(i)));
<代码> >(int i=0;i < p>),我不太明白。C++版本在所有的数据中循环,不管密钥长度是多少,按需循环键。(代码)k=(++k*p>)看起来不一样。不管是什么密钥长度,C++版本都会循环遍历所有的数据,必要时循环键。(++kyes我明白了。这就是为什么我问是否有一种简单的方法,比如我可以使用图书馆。谢谢。是的,我明白了。这就是为什么我问是否有一种简单的方法,比如我可以使用图书馆。谢谢。