我是台湾的学生。我正在学习如何在 Android 中编程。
但我在使用 Spongy Castle 库在 ECDH 中生成密钥对时遇到问题。
当我启动应用程序时,Android系统显示应用程序已停止。
这是我的代码和我的导入
public class MainActivity<ECParams> extends Activity {
String msg,Test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button generator= (Button) findViewById(R.id.key_pair_generator);
generator.setOnClickListener(ECkeyPairGenerator);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private Button.OnClickListener ECkeyPairGenerator = new Button.OnClickListener()
{
public void onClick(View v) {
KeyPairGenerator kpg=null;
ECGenParameterSpec ecParamSpec = new ECGenParameterSpec("secp224k1");
try {
kpg = KeyPairGeneratorSpi.getInstance("ECDH", "SC");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
kpg.initialize(ecParamSpec);
} catch (InvalidAlgorithmParameterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
KeyPair kpair=kpg.generateKeyPair();
msg="pp";
ShowMsg();
}
};
public static String byteArrayToHexString(byte b[]) {
StringBuffer s = new StringBuffer();
int LEN = b.length;
if (b.length != LEN)
throw new RuntimeException("byteArrayToHexString() " +
"wrong argument length (!="+LEN);
for (int j = 0; j < b.length; j++) {
s.append(Integer.toHexString((int)((b[j]>>4)&0x0f)));
s.append(Integer.toHexString((int)(b[j]&0x0f)));
}
return new String(s);
}
public void ShowMsg(){
Intent intent = new Intent();
intent.setClass(MainActivity.this, Show.class);
Bundle bundle = new Bundle();
bundle.putString("Show", msg);
intent.putExtras(bundle);
startActivity(intent);
}
}
请帮忙。
我解决这个问题。
它需要通过新的方式添加提供者。像这样。
static {Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);}
以及生成密钥对的代码:
try {
ECGenParameterSpec ecParamSpec = new ECGenParameterSpec("secp224k1");
KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECDH","SC");
kpg.initialize(ecParamSpec);
KeyPair kpair=kpg.generateKeyPair();
pkey=kpair.getPublic();
skey=kpair.getPrivate();
}catch(Exception e){e.printStackTrace();}
thanks
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)