我正在構建一個android sms消息應用程序,它在發送之前在發件人站點加密消息。但是,在從消息轉換爲係數爲-1,0,1的多項式m時,我正在使用Base-3轉換。因此,山姆中的每個字符都被轉換爲多項式的5個係數。這允許我最多隻發送32(5 * 32 = 160)個字符。如何將消息轉換爲多項式以便我可以發送更多字符?實現NTRU在Android上加密SMS消息
希望我明白了這個問題!
我正在構建一個android sms消息應用程序,它在發送之前在發件人站點加密消息。但是,在從消息轉換爲係數爲-1,0,1的多項式m時,我正在使用Base-3轉換。因此,山姆中的每個字符都被轉換爲多項式的5個係數。這允許我最多隻發送32(5 * 32 = 160)個字符。如何將消息轉換爲多項式以便我可以發送更多字符?實現NTRU在Android上加密SMS消息
希望我明白了這個問題!
NTRUEncrypt輸出一個模q的多項式,而不是3(你可能會想到輸入是一個多項式模3)。
通常,q = 2048 = 2^11。假設160個字符= 160個字節,一條SMS消息可以高達1280位,因此您可以在一條加密的消息中發送1280/11 = 116個係數。爲了保證合理安全,您需要幾百個係數,再加上幾個額外的字節來防止某些類型的攻擊。
因此,加密的消息不適合一個SMS消息,仍然是安全的,但你總是可以把它分解成多個消息。如果您使用open NTRU implementation的APR2011_439_FAST參數,則加密的消息將是604字節,這意味着您需要4條SMS消息。
或者您可以使用256位ECC代替NTRU,如果您發送了32個包含AES密鑰和salt的ECC加密字節,然後是96個AES加密字節,則可以將96個字節合併到一條消息中。