.NET ez 2013-04-18
如果你遇到 Uint64 還不夠處理的窘境,可以試試看 BigInteger Class,就可以處理超大數值。
官方網站:http://www.codeproject.com/Articles/2728/C-BigInteger-Class
本地下載:BigInteger_src
public static void Main(string[] args) { // private and public key BigInteger bi_e = new BigInteger( "a932b948feed4fb2b692609bd22164fc9edb" + "59fae7880cc1eaff7b3c9626b7e5b241c27a" + "974833b2622ebe09beb451917663d4723248" + "8f23a117fc97720f1e7", 16); BigInteger bi_d = new BigInteger( "4adf2f7a89da93248509347d2ae506d683dd" + "3a16357e859a980c4f77a4e2f7a01fae289f" + "13a851df6e9db5adaa60bfd2b162bbbe31f7" + "c8f828261a6839311929d2cef4f864dde65e" + "556ce43c89bbbf9f1ac5511315847ce9cc8d" + "c92470a747b8792d6a83b0092d2e5ebaf852" + "c85cacf34278efa99160f2f8aa7ee7214de07b7", 16); BigInteger bi_n = new BigInteger( "e8e77781f36a7b3188d711c2190b560f205a" + "52391b3479cdb99fa010745cbeba5f2adc08" + "e1de6bf38398a0487c4a73610d94ec36f17f" + "3f46ad75e17bc1adfec99839589f45f95ccc" + "94cb2a5c500b477eb3323d8cfab0c8458c96" + "f0147a45d27e45a4d11d54d77684f65d48f1" + "5fafcc1ba208e71e921b9bd9017c16a5231af7f", 16); Console.WriteLine("e =\n" + bi_e.ToString(10)); Console.WriteLine("\nd =\n" + bi_d.ToString(10)); Console.WriteLine("\nn =\n" + bi_n.ToString(10) + "\n"); // data BigInteger bi_data = new BigInteger( "12345678901234567890", 10); // encrypt and decrypt data BigInteger bi_encrypted = bi_data.modPow(bi_e, bi_n); BigInteger bi_decrypted = bi_encrypted.modPow( bi_d, bi_n); Console.WriteLine("bi_data = " + bi_data); Console.WriteLine("\nbi_encrypted =\n" + bi_encrypted); Console.WriteLine("\nbi_decrypted = " + bi_decrypted); }
標籤: .NET