ECC算法推荐参数-256k1和256r1)
Posted Jaydenn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ECC算法推荐参数-256k1和256r1)相关的知识,希望对你有一定的参考价值。
ECC推荐参数:256k1
p=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
a=0000000000000000000000000000000000000000000000000000000000000000
b=0000000000000000000000000000000000000000000000000000000000000007
G=79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
n=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
ECC推荐参数:256r1
p=FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
a=FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC
b=5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B
G=6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296
4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5
n=FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551
secp256r1:
public class SecP256r1
private final static byte[] p = (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0xff,
(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff ;
private final static byte[] a = (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0xff,
(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
(byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xfc
;
private final static byte[] b = 0x5a, (byte) 0xc6, 0x35, (byte) 0xd8, (byte) 0xaa, 0x3a,
(byte) 0x93, (byte) 0xe7, (byte) 0xb3, (byte) 0xeb, (byte) 0xbd, 0x55, 0x76, (byte) 0x98,
(byte) 0x86, (byte) 0xbc, 0x65, 0x1d, 0x06, (byte) 0xb0, (byte) 0xcc, 0x53, (byte) 0xb0,
(byte) 0xf6, 0x3b, (byte) 0xce, 0x3c, 0x3e, 0x27, (byte) 0xd2, 0x60, 0x4b ;
private final static byte[] G = 0x04, 0x6b, 0x17, (byte) 0xd1, (byte) 0xf2, (byte) 0xe1, 0x2c,
0x42, 0x47, (byte) 0xf8, (byte) 0xbc, (byte) 0xe6, (byte) 0xe5, 0x63, (byte) 0xa4, 0x40,
(byte) 0xf2, 0x77, 0x03, 0x7d, (byte) 0x81, 0x2d, (byte) 0xeb, 0x33, (byte) 0xa0, (byte) 0xf4,
(byte) 0xa1, 0x39, 0x45, (byte) 0xd8, (byte) 0x98, (byte) 0xc2, (byte) 0x96, 0x4f, (byte) 0xe3,
0x42, (byte) 0xe2, (byte) 0xfe, 0x1a, 0x7f, (byte) 0x9b, (byte) 0x8e, (byte) 0xe7, (byte) 0xeb,
0x4a, 0x7c, 0x0f, (byte) 0x9e, 0x16, 0x2b, (byte) 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e,
(byte) 0xce, (byte) 0xcb, (byte) 0xb6, 0x40, 0x68, 0x37, (byte) 0xbf, 0x51, (byte) 0xf5 ;
private final static byte[] r = (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, 0x00, 0x00, 0x00,
0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
(byte) 0xff, (byte) 0xbc, (byte) 0xe6, (byte) 0xfa, (byte) 0xad, (byte) 0xa7, 0x17, (byte) 0x9e,
(byte) 0x84, (byte) 0xf3, (byte) 0xb9, (byte) 0xca, (byte) 0xc2, (byte) 0xfc, 0x63, 0x25, 0x51 ;
static public KeyPair newKeyPair()
KeyPair key = new KeyPair(KeyPair.ALG_EC_FP, (short) 256);
ECPrivateKey privKey = (ECPrivateKey) key.getPrivate();
ECPublicKey pubKey = (ECPublicKey) key.getPublic();
privKey.setFieldFP(p, (short) 0, (short) p.length);
privKey.setA(a, (short) 0, (short) a.length);
privKey.setB(b, (short) 0, (short) b.length);
privKey.setG(G, (short) 0, (short) G.length);
privKey.setR(r, (short) 0, (short) r.length);
pubKey.setFieldFP(p, (short) 0, (short) p.length);
pubKey.setA(a, (short) 0, (short) a.length);
pubKey.setB(b, (short) 0, (short) b.length);
pubKey.setG(G, (short) 0, (short) G.length);
pubKey.setR(r, (short) 0, (short) r.length);
return key;
R语言非参数方法:使用核方法和K-NN(k近邻算法)分类预测心脏病数据
原文链接: http://tecdat.cn/?p=22181
原文出处:拓端数据部落公众号
本文考虑一下基于核方法进行分类预测。注意,在这里,我们不使用标准逻辑回归,它是参数模型。
非参数方法
用于函数估计的非参数方法大致上有三种:核方法、局部多项式方法、样条方法。
非参的函数估计的优点在于稳健,对模型没有什么特定的假设,只是认为函数光滑,避免了模型选择带来的风险;但是,表达式复杂,难以解释,计算量大是非参的一个很大的毛病。所以说使用非参有风险,选择需谨慎。
非参的想法很简单:函数在观测到的点取观测值的概率较大,用x附近的值通过加权平均的办法估计函数f(x)的值。
核方法
当加权的权重是某一函数的核,这种方法就是核方法,常见的有Nadaraya-Watson核估计与Gasser-Muller核估计方法,也就是很多教材里谈到的NW核估计与GM核估计,这里我们还是不谈核的选择,将一切的核估计都默认用Gauss核处理。
NW核估计形式为:
GM核估计形式为:
式中
数据
使用心脏病数据,预测急诊病人的心肌梗死,包含变量:
- 心脏指数
- 心搏量指数
- 舒张压
- 肺动脉压
- 心室压力
- 肺阻力
- 是否存活
既然我们知道核估计是什么,我们假设k是N(0,1)分布的密度。在x点,使用带宽h,我们得到以下代码
-
-
dnorm(( 心搏量指数-x)/bw, mean=0,sd=1)
-
weighted.mean( 存活,w)}
-
plot(u,v,ylim=0:1,
-
-
当然,我们可以改变带宽。
-
Vectorize( mean_x(x,2))(u)
-
-
-
我们观察到:带宽越小,我们得到的方差越大,偏差越小。“越大的方差”在这里意味着越大的可变性(因为邻域越小,计算平均值的点就越少,估计值也就越不稳定),以及“偏差越小”,即期望值应该在x点计算,所以邻域越小越好。
使用光滑函数
用R函数来计算这个核回归。
smooth( 心搏量指数, 存活, ban = 2*exp(1)
我们可以复制之前的估计。然而,输出不是一个函数,而是两个向量序列。此外,正如我们所看到的,带宽与我们以前使用的带宽并不完全相同。
-
-
smooth(心搏量指数,存活,"normal",bandwidth = bk)
-
optim(bk,f)$par}
-
x=seq(1,10,by=.1)
-
plot(x,y)
-
abline(0,exp(-1),col="red")
-
-
-
斜率为0.37,实际上是e^{-1}。
高维应用
现在考虑我们的双变量数据集,并考虑一些单变量(高斯)核的乘积
-
-
-
w = dnorm((df$x1-x)/bw1, mean=0,sd=1)*
-
dnorm((df$x2-y)/bw2, mean=0,sd=1)
-
w.mean(df$y=="1",w)
-
contour(u,u,v,levels = .5,add=TRUE)
-
-
我们得到以下预测
在这里,不同的颜色是概率。
K-NN(k近邻算法)
另一种方法是考虑一个邻域,它不是用到点的距离来定义的,而是用我们得到的n观测值来定义k邻域(也就是k近邻算法)。
接下来,我们自己编写函数来实现K-NN(k近邻算法):
困难的是我们需要一个有效的距离。
如果每个分量的单位都非常不同,那么使用欧几里德距离将毫无意义。所以,我们考虑马氏距离
-
mahalanobis = function(x,y,Sinv){as.numeric(x-y)%*%Sinv%*%t(x-y)}
-
mahalanobis(my[i,1:7],my[j,1:7])
-
-
这里我们有一个函数来寻找k最近的邻居观察样本。然后可以做两件事来得到一个预测。我们的目标是预测一个类,所以我们可以考虑使用一个多数规则:对yi的预测与大多数邻居样本的预测是一样的。
-
-
for(i in 1:length(Y)) Y[i] = sort( 存活[k_closest(i,k)])[(k+1)/2]
-
-
-
我们也可以计算出最近邻居中黑点的比例。它实际上可以被解释为是黑色的概率,
-
for(i in 1:length(Y)) Y[i] = mean( 存活[k_closest(i,k)])
-
-
-
我们可以在数据集上看到观察结果,基于多数原则的预测,以及死亡样本在7个最近的邻居中的比例
k_ma(7),PROPORTION=k_mean(7))
这里,我们得到了一个位于 x 的观测点的预测,但实际上,可以寻找任何 x的最近邻k。回到我们的单变量例子(得到一个图表),我们有
-
-
-
w = rank(abs(心搏量指数-x),method ="random")
-
mean(存活[which(<=9)])}
-
-
-
不是很平滑,但我们的点也不是很多。
如果我们在二维数据集上使用这种方法,我们就会得到以下的结果。
-
-
k = 6
-
dist = function(j) mahalanobis(c(x,y))
-
vect = Vectorize( dist)(1:nrow(df))
-
idx = which(rank(vect<=k)
-
-
contour(u,u,v,levels = .5,add=TRUE)
-
-
这就是局部推理的思想,用kernel对 x的邻域进行推理,或者用k-NN近邻。
最受欢迎的见解
3.python中使用scikit-learn和pandas决策树
7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用
以上是关于ECC算法推荐参数-256k1和256r1)的主要内容,如果未能解决你的问题,请参考以下文章