我不是c中的古茹,我需要一些幫助。 我有這樣的代碼:不能將類型'int'隱式轉換爲'byte'。存在明確的轉換(你是否缺少一個轉換?)編譯
{
private ushort InCounter;
private ushort OutCounter;
private byte[] cipherKey1 = new byte[256];
private byte[] cipherKey2 = new byte[256];
public AuthCipher()
{
byte baseKey = 157;
byte baseKey2 = 98;
for (int i = 0; i < 256; i++)
{
this.cipherKey1[i] = baseKey;
this.cipherKey2[i] = baseKey2;
baseKey = (15 + baseKey * 250) * baseKey + 19;
baseKey2 = (121 - baseKey2 * 92) * baseKey2 + 109;
}
this.InCounter = 0;
this.OutCounter = 0;
}
public unsafe void Encrypt(byte* src, int srcOffset, byte[] dst, int dstOffset, int length)
{
fixed (byte* pDst = &dst[dstOffset])
{
for (int i = srcOffset; i < srcOffset + length; i++)
{
pDst[i] = (src[i]^171);
pDst[i] = (byte)(pDst[i] >> 4 | (int)pDst[i] << 4);
byte* expr_39 = pDst + i;
*expr_39 ^= this.cipherKey2[this.InCounter >> 8];
byte* expr_51 = pDst + i;
*expr_51 ^= this.cipherKey1[(int)(this.InCounter & 255)];
this.InCounter += 1;
}
}
}
public unsafe void Decrypt(byte[] src, int srcOffset, byte* dst, int dstOffset, int length)
{
fixed (byte* pSrc = &src[srcOffset])
{
for (int i = dstOffset; i < dstOffset + length; i++)
{
dst[i] = (pSrc[i]^171);
dst[i] = (byte)((int)dst[i] << 4 | dst[i] >> 4);
byte* expr_35 = dst + i;
*expr_35 ^= this.cipherKey2[this.OutCounter >> 8];
byte* expr_4C = dst + i;
*expr_4C ^= this.cipherKey1[(int)(this.OutCounter & 255)];
this.OutCounter += 1;
}
}
}
}
錯誤彈出在:
baseKey = (15 + baseKey * 250) * baseKey + 19;
baseKey2 = (121 - baseKey2 * 92) * baseKey2 + 109;
pDst[i] = (src[i]^171);
dst[i] = (pSrc[i]^171);
已經嘗試讀一些其他的這個問題的答案府沒有運氣。 如果任何人可以幫助我瞭解什麼是錯的可能我知道如何解決它:)
任何幫助將不勝感激。
至少知道您在使用哪種語言。 – LogicStuff
作爲一個小問題:*通常*不是推出自己的加密/解密代碼的好主意,而是使用預先存在的衆所周知的(以及良好分析的)實現。 'expr_39'等在這裏讓我覺得你實際上是從某處反向工程... –