最近发现youtube的证书使用了新的椭圆曲线算法,于是我也想折腾弄了一下。
1.首先需要生成椭圆曲线算法的密钥 命令

openssl ecparam -genkey -name secp384r1 | sudo openssl ec -out private.key

如果已经有密钥可以跳过这步,我使用的算法是secp256r1
2.接下来需要安装certbot,这部不多说了。
3.需要创建配置文件如 cert.conf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
 
[req_distinguished_name]
 
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
 
[alt_names]
DNS.1 = t2t2.cc
DNS.2 = www.t2t2.cc
DNS.3 = jason19659.pw
DNS.4 = www.jason19659.pw

DNS写自己的域名,然后保存为文件
4.

openssl req -new -sha256 -key private.key -out public.csr -subj "/C=IN/ST=Goa/L=Ponda/O=Priolkar Elf/CN=t2t2.cc" -config cert.conf
 

生成csr.
5.生成证书 命令:

letsencrypt certonly --hsts -w /var/www/blog/ -d t2t2.cc -d jason19659.pw --email jason19659@163.com --csr "public.csr"
 
 

-d 为需要生成证书的域名 -w是网站根目录,可以直接访问到的 –csr是csr文件位置。
6.生成之后 private是ssl_certificate_key。

– Congratulations! Your certificate and chain have been saved at:
/ssl/t2t2.cc/0001_chain.pem

生成之后会提示ssl_certificate在哪

继续转载当年的坑系列,这个系列的题目都是当年从各种坑中收集而来的。
本题中只要有跟final字符串有关的操作,最后结果都相等

false

true

true

true

true


                String ab = "ab";
			
	        String a = "a";
	        String b = a +"b";
	        System.out.println(b == ab);
	        
	        final String s12 = "a";
	        String s22 = s12 +"b";
	        System.out.println(s22 == ab);
	        
	        final String s1 = "ab";
	        String s4 = "abcdef";
	        String s5 = s1 + "cdef";
	        String s6 = "ab" + "cdef";
	        System.out.println(s4 == s5);
	        System.out.println(s4 == s6);
	        System.out.println(s5 == s6);

继续转载当年的坑系列,这个系列的题目都是当年从各种坑中收集而来的。

 


	public class Test23 {
		static {
			name = "B";
		}
		static String name = "A";
		static {
			System.out.println(name);
		}
	
		public Test23() {
			System.out.println("初始化" + name);
		}
	
		public static void main(String[] args) {
	
		}
	}

会输出什么?
答案:
Continue reading

继续转载当年的坑系列,这个系列的题目都是当年从各种坑中收集而来的。

 

 

public class 初始化重载 {
    public static void main(String[] args) {
        new Derived();
    }
}
 
class Base {
    private int i = 2;
     
    public Base() {
        display();
    }
    public void display() {
        System.out.println(i);
    }
}
 
class Derived extends Base {
    private int i = 22;
     
    public Derived() {
        i = 222;
    }
     
    public void display() {
        System.out.println(i);
    }
}

问:会输出什么?
答案:
Continue reading

最近看了一下天凤的牌效算法,发现他的js文件加密了,然后就研究了一下。最后大概摸清了每个函数的功能,对其二次封装成了天凤牌效计算接口。
下面是接口的用法
———————–
GET : https://t2t2.cc/tenhou/getResult
参数 q
参数值 : 手牌
例:https://t2t2.cc/tenhou/getResult?q=2468m567p3567s24z4m
返回
-xts 一般形/标准型向听数
-px 牌效
— “h”: 打出的牌
— “e”: 打出后有效牌数量,
— “c”:可以摸的有效牌
— “i”: 剩余手牌

GET : https://t2t2.cc/tenhou/getPai
参数 q
参数值 : 牌的数字编号(h和c返回的数字)
例子:https://t2t2.cc/tenhou/getPai?q=3,4,10,13,15,20,23
返回
翻译过后牌的数组

在知乎上看到一回答

public static void main(String ... args) {
	    System.out.println(randomString(-229985452)+' '+randomString(-147909649));
	}
	public static String randomString(int seed) {
	    Random rand = new Random(seed);
	    StringBuilder sb = new StringBuilder();
	    for(int i=0;;i++) {
	        int n = rand.nextInt(27);
	        if (n == 0) break;
	        sb.append((char) ('`' + n));
	    }
	    return sb.toString();
	}

跑了一下。。。麻辣个鸡的。。。