转换C++;Java加密 我有以下C++代码,用XOR。p> #define MPI_CIPHER_KEY "qwerty" Buffer FooClient::cipher_string(const Buffer& _landi

转换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++;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 = 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我明白了。这就是为什么我问是否有一种简单的方法,比如我可以使用图书馆。谢谢。是的,我明白了。这就是为什么我问是否有一种简单的方法,比如我可以使用图书馆。谢谢。