使用BouncyCastle API的RSA密钥生成错误

时间:2018-02-27 15:10:03

标签: java bouncycastle

我有一个非常简单的短程序: -

 handleClick (){  this.setState({newSlotVisible: true});} renderSlotsOfTab(tab, i){
    const ViewFlex = [1, 2, 3, 4];
  return (
      <TouchableOpacity
       onStartShouldSetResponder={() => true}
       onMoveShouldSetResponder={() => true}
       onResponderMove={()=>this.hideNewSlot()}
       ref={(ref) => i}
       tabLabel={tab}
       key={i}
       activeOpacity={1}
      >
  {
    ViewFlex.map((b , i)=>
      {
        return(
          <TouchableOpacity
            ref={i}
            removeClippedSubviews
            style={[styles.oneSlotView ,
              { flex: b }]}
            key={i}
            /** here get the touch position**/
            onPress={this.handleClick.bind(this, i)}

          >

            <View
              style={ styles.hoursIndicatorView}
            >
              <Text style={styles.textIndicatorTime}>00h00</Text>
            </View>
          </TouchableOpacity>)
      }
    )}
  {this.state.newSlotVisible?
    //the new view to render is this one
    this.renderNewView();
    :null}
</TouchableOpacity>

根据BoucnyCastle API,我应该得到一个RSA密钥对。相反,我得到: -

Security.addProvider(new BouncyCastleProvider());
RSAKeyPairGenerator kpg = new RSAKeyPairGenerator();
kpg.init(new KeyGenerationParameters(new SecureRandom(), 2048));
kpg.generateKeyPair();

任何想法为什么?感谢。

1 个答案:

答案 0 :(得分:2)

您正在使用提供程序特定的生成器,因此您还必须使用提供程序特定的参数类。或者以独立于提供者的方式使用JCE API:

KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC");
gen.initialize(2048, new SecureRandom());
KeyPair kp = gen.generateKeyPair();

这仍然使用BouncyCastle,但所有提供者特定的东西都隐藏在JCE API之后。