С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/103: Рейтинг темы: голосов - 103, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 10
1

Шифрование RSA в Java

02.07.2013, 17:59. Показов 20996. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, господа! Проблема такая: дали задание сделать программу шифрования RSA в Java, я эту программу вижу второй раз в жизни, раньше баловался в бейсике, а тут все по другому и чтобы сделать задание мне нужно конкретно разбираться месяца 2 наверно. На выполнение дали время 03.07-04.07. Смотрел здесь на форуме по этой теме, но там все сложно решается, преподаватель сказал что у меня проще задание в пример он привел алгоритм в википедии (в поиске "RSA", раздел "пример"). Сам понимаю, что это не так сложно, но нет времени разбираться...Буду рад помощи!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2013, 17:59
Ответы с готовыми решениями:

Java rsa шифрование
Доброе времени суток. Подскажите пожалуйста примеры программ где используется технология шифрования...

RSA и кодировка в JAVA
Добрый вечер. Сам являюсь новичком. По образцу со страницы...

Java шифрование
Добрый вечер! Срочно нужно решить задачку: Дана строка-предложение. Зашифровать ее, поместив...

Java RC4 + CRC16 шифрование/дешифрование
Есть код который дишфрует пакет нужно написать код который будет шифровать данный пакет обратно ...

3
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
02.07.2013, 20:10 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class JavaApplication6 {
 
    public static void main ( String[] args )
            throws NoSuchAlgorithmException,
                   NoSuchPaddingException,
                   InvalidKeyException,
                   IllegalBlockSizeException,
                   BadPaddingException {
        
        String text =
                  "Lorem ipsum dolor sit amet, consectetur adipisicing elit,\n"
                + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n"
                + "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi\n"
                + "ut aliquip ex ea commodo consequat.";
        
        Cipher cipher = Cipher.getInstance( "RSA" );
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance( "RSA" );
        keyGen.initialize( 2048 );
        KeyPair kp = keyGen.genKeyPair();
 
        PublicKey publicKey = kp.getPublic();
        PrivateKey privateKey = kp.getPrivate();
 
        
        cipher.init( Cipher.ENCRYPT_MODE, publicKey );
        byte[] x = cipher.doFinal( text.getBytes() );
 
        cipher.init( Cipher.DECRYPT_MODE, privateKey );
        byte[] y = cipher.doFinal( x );
        
        System.out.println("\nText is:\n" + text);
        System.out.println("\nEncrypt text:\n" + new String (x));
        System.out.println("\nDecrypt text:\n" + new String (y));
    }
сорцы отседова
1
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 10
02.07.2013, 20:37  [ТС] 3
Благодарю! Это в BigInteger? Мне кажется это немного не то, так как в википедии там через переменные все делается, возможно я ошибаюсь, просто когда я переспросил преподавателя он сказал делать так же как там, то есть прямо вычисления в программе (сложение, умножение и т.д.), если такое возможно
https://www.cyberforum.ru/atta... 1372782686
Я показал этот код, но он не понравился.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
 
import javax.crypto.Cipher;
 
/**
 * @author JavaDigest
 * 
 */
public class EncryptionUntil {
 
  /**
   * String to hold name of the encryption algorithm.
   */
  public static final String ALGORITHM = "RSA";
 
  /**
   * String to hold the name of the private key file.
   */
  public static final String PRIVATE_KEY_FILE = "C:/keys/private.key";
 
  /**
   * String to hold name of the public key file.
   */
  public static final String PUBLIC_KEY_FILE = "C:/keys/public.key";
 
  /**
   * Generate key which contains a pair of private and public key using 1024
   * bytes. Store the set of keys in Prvate.key and Public.key files.
   * 
   * @throws NoSuchAlgorithmException
   * @throws IOException
   * @throws FileNotFoundException
   */
  public static void generateKey() {
    try {
      final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
      keyGen.initialize(1024);
      final KeyPair key = keyGen.generateKeyPair();
 
      File privateKeyFile = new File(PRIVATE_KEY_FILE);
      File publicKeyFile = new File(PUBLIC_KEY_FILE);
 
      // Create files to store public and private key
      if (privateKeyFile.getParentFile() != null) {
        privateKeyFile.getParentFile().mkdirs();
      }
      privateKeyFile.createNewFile();
 
      if (publicKeyFile.getParentFile() != null) {
        publicKeyFile.getParentFile().mkdirs();
      }
      publicKeyFile.createNewFile();
 
      // Saving the Public key in a file
      ObjectOutputStream publicKeyOS = new ObjectOutputStream(
          new FileOutputStream(publicKeyFile));
      publicKeyOS.writeObject(key.getPublic());
      publicKeyOS.close();
 
      // Saving the Private key in a file
      ObjectOutputStream privateKeyOS = new ObjectOutputStream(
          new FileOutputStream(privateKeyFile));
      privateKeyOS.writeObject(key.getPrivate());
      privateKeyOS.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
 
  }
 
  /**
   * The method checks if the pair of public and private key has been generated.
   * 
   * @return flag indicating if the pair of keys were generated.
   */
  public static boolean areKeysPresent() {
 
    File privateKey = new File(PRIVATE_KEY_FILE);
    File publicKey = new File(PUBLIC_KEY_FILE);
 
    if (privateKey.exists() && publicKey.exists()) {
      return true;
    }
    return false;
  }
 
  /**
   * Encrypt the plain text using public key.
   * 
   * @param text
   *          : original plain text
   * @param key
   *          :The public key
   * @return Encrypted text
   * @throws java.lang.Exception
   */
  public static byte[] encrypt(String text, PublicKey key) {
    byte[] cipherText = null;
    try {
      // get an RSA cipher object and print the provider
      final Cipher cipher = Cipher.getInstance(ALGORITHM);
      // encrypt the plain text using the public key
      cipher.init(Cipher.ENCRYPT_MODE, key);
      cipherText = cipher.doFinal(text.getBytes());
    } catch (Exception e) {
      e.printStackTrace();
    }
    return cipherText;
  }
 
  /**
   * Decrypt text using private key.
   * 
   * @param text
   *          :encrypted text
   * @param key
   *          :The private key
   * @return plain text
   * @throws java.lang.Exception
   */
  public static String decrypt(byte[] text, PrivateKey key) {
    byte[] dectyptedText = null;
    try {
      // get an RSA cipher object and print the provider
      final Cipher cipher = Cipher.getInstance(ALGORITHM);
 
      // decrypt the text using the private key
      cipher.init(Cipher.DECRYPT_MODE, key);
      dectyptedText = cipher.doFinal(text);
 
    } catch (Exception ex) {
      ex.printStackTrace();
    }
 
    return new String(dectyptedText);
  }
}
Миниатюры
Шифрование RSA в Java  
0
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
02.07.2013, 23:03 4
а... тобиш вам нужно реализовать сам алгоритм шифрования на джаве... тут не помогу, не силен с математике

Добавлено через 1 час 4 минуты
вот это возможно вам поможет:
RSA шифрование
0
02.07.2013, 23:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2013, 23:03
Помогаю со студенческими работами здесь

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at pr4.RSA.main(RSA.java:44)
package pr4; import java.math.BigInteger; import java.security.SecureRandom; public...

RSA шифрование
Всем привет. Можете пожалуйста скинуть ссылку, где нормальная реализация RSA шифрования на java. Я...

RSA шифрование
Здравствуйте. Нашел реализацию RSA для Java в интернете. Немного переделал класс, добавив getters и...

RSA в JAVA
RSA я реализовал шифровку текста в RSA в Java. Но при попытке зашифровать большой текст вылетает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru