我有一个非常简单的短程序: -
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();
任何想法为什么?感谢。
答案 0 :(得分:2)
您正在使用提供程序特定的生成器,因此您还必须使用提供程序特定的参数类。或者以独立于提供者的方式使用JCE API:
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC");
gen.initialize(2048, new SecureRandom());
KeyPair kp = gen.generateKeyPair();
这仍然使用BouncyCastle,但所有提供者特定的东西都隐藏在JCE API之后。