>source

pointycastle을 추가하고 평가판 "Hello World"문자열을 암호화하여 키 쌍을 생성했습니다. 이로부터 개인 및 공개 키의 값을 얻고 싶습니다. keyPair.privateKey 의 값을 인쇄하려고 할 때마다 저장되는 곳이 있습니까? Instance of 'RSAPrivateKey 를 리턴합니다. .

내가 사용한 코드는 다음과 같다

       var keyParams = new RSAKeyGeneratorParameters(new BigInt.from(65537), 2048, 5);
        var secureRandom = new FortunaRandom();
        var random = new Random.secure();
        List<int> seeds = [];
        for (int i = 0; i < 32; i++) {
          seeds.add(random.nextInt(255));
        }
        secureRandom.seed(new KeyParameter(new Uint8List.fromList(seeds)));
        var rngParams = new ParametersWithRandom(keyParams, secureRandom);
        var k = new RSAKeyGenerator();
        k.init(rngParams);
        var keyPair = k.generateKeyPair();
        var cipher = new RSAEngine()..init( true, new PublicKeyParameter<RSAPublicKey>(keyPair.publicKey));
        print("pubkey: ${keyPair.publicKey.toString()}");
        var cipherText = cipher.process(new Uint8List.fromList("Hello World".codeUnits));
        print("Encrypted: ${new String.fromCharCodes(cipherText)}");
        cipher.init( false, new PrivateKeyParameter<RSAPrivateKey>(keyPair.privateKey));
        //cipher.init( false, new PrivateKeyParameter(keyPair.privateKey) )
        var decrypted = cipher.process(cipherText);
        print("Decrypted: ${new String.fromCharCodes(decrypted)}");

  • 답변 # 1

    package:pointycastle/asymmetric/api.dart 를 가져와야합니다 을 사용하고

     var k = RSAKeyGenerator()..init(rngParams);
      AsymmetricKeyPair<PublicKey, PrivateKey> keyPair = k.generateKeyPair();
      RSAPrivateKey privateKey = keyPair.privateKey;
      RSAPublicKey publicKey = keyPair.publicKey;
      print(privateKey.d); // prints private exponent
      print(publicKey.n); // prints modulus
    
    

    개별 부품으로 재생성 :

     RSAPrivateKey foo = RSAPrivateKey(
        privateKey.n,
        privateKey.d,
        privateKey.p,
        privateKey.q,
      );
      RSAPublicKey bar = RSAPublicKey(publicKey.n, publicKey.e);
    
    

관련 자료

  • 이전 python 3.x - 지오 코딩 - typeerror : 해시하기 전에 유니 코드 객체를 인코딩해야합니다
  • 다음 배쉬는 if 문과 else 문을 모두 입력합니다