Conscrypt

Conscrypt를 이용하면 Android 4.4(Kitkat)에서 최신 SSL/TLS 버전을 지원할 수 있습니다.

 

https://github.com/google/conscrypt

 

GitHub - google/conscrypt: Conscrypt is a Java Security Provider that implements parts of the Java Cryptography Extension and Ja

Conscrypt is a Java Security Provider that implements parts of the Java Cryptography Extension and Java Secure Socket Extension. - google/conscrypt

github.com

 

Conscrypt는 Android와 Java 환경에서 SSL/TLS 통신을 개선하고 성능을 최적화하기 위해 사용하는 오픈소스 라이브러리입니다. Conscrypt는 기본적으로 BoringSSL을 기반으로 하며, Java의 기본 SSL 구현체인 JSSE(Java Secure Socket Extension)보다 빠르고 안전한 SSL/TLS 기능을 제공합니다.

 

  1. BoringSSL 기반: Conscrypt는 Google의 BoringSSL 라이브러리를 기반으로 만들어졌습니다. BoringSSL은 OpenSSL의 포크로, 성능과 보안 향상을 위해 개발되었습니다. Android와 다른 Google 서비스에서는 이 라이브러리를 활용하여 더 나은 성능과 보안을 제공하려고 합니다.

  2. SSL/TLS 성능 최적화: Conscrypt는 기존의 Java SSL/TLS 구현체보다 빠른 성능을 제공합니다. 특히 Android 장치에서의 성능을 개선하기 위해 설계되었으며, 이를 통해 SSL 연결 및 암호화 처리에 드는 비용을 줄일 수 있습니다.

  3. 향상된 보안: Conscrypt는 보안 기능을 강화하여 최신의 암호화 기술과 프로토콜을 지원합니다. 또한, 취약점에 대응하기 위해 Google의 보안 팀에 의해 꾸준히 업데이트됩니다.

  4. OpenJDK와 호환성: Conscrypt는 Java 플랫폼에서도 사용할 수 있으며, 이를 통해 OpenJDK 기반의 시스템에서도 고성능의 SSL/TLS 처리를 제공합니다. Android에서도 주로 사용되지만, 일반적인 Java 애플리케이션에도 적용 가능합니다.

  5. 암호화 프로토콜 및 알고리즘 지원: Conscrypt는 최신 SSL/TLS 프로토콜을 지원하며, 이를 통해 클라이언트와 서버 간의 안전한 통신을 보장합니다. TLS 1.2, 1.3과 같은 최신 버전을 지원하며, RSA, ECDSA, AES 등의 강력한 암호화 알고리즘을 사용합니다.
반응형

Android에서 Conscrypt 사용하는 방법

build.gradle 에 추가

implementation 'org.conscrypt:conscrypt-android:2.5.1'

 

onCreate()에 추가

Security.insertProviderAt(Conscrypt.newProvider(), 1);

 

 

Conscrypt는 Android와 Java 환경에서 보안성 높은 SSL/TLS 연결을 제공하며, 성능 최적화와 보안 강화를 위해 사용되는 중요한 라이브러리입니다. 최신 암호화 기술을 제공하면서도 모바일 환경에 최적화되어 있기 때문에, Android 애플리케이션에서 네트워크 통신 시 매우 유용하게 사용할 수 있습니다.

728x90
반응형


행이 15만개 정도 되는 테이블에서 CHAR 타입으로 지정된 컬럼에 대해서 검색을 하는데 쿼리가 너무 느려서 사용한 방법입니다.

.....
16 rows in set (1.95 sec)

 

적용전에는 2초 가량 걸렸습니다. 

.....
16 rows in set (0.00 sec)


인덱스를 적용하니 거의 시간이 안 걸렸습니다. 


인덱스에는 두가지가 있습니다. 

 


1. 일반 인덱스 (Index)
- 일반 인덱스는 데이터 검색 속도를 높이기 위해 사용되며, 값의 중복을 허용합니다. 
- 예를 들어, 동일한 이름을 가진 여러 사용자가 있을 수 있으므로 이름 컬럼에 일반 인덱스를 추가할 수 있습니다. 

 CREATE INDEX index_name ON table_name(column_name);

2. 유니크 인덱스 (Unique Index)
- 유니크 인덱스는 인덱스 컬럼의 값이 고유해야 할 때 사용됩니다.
- 예를 들어, 사용자 테이블의 email 컬럼은 유니크 인덱스로 설정하여 중복된 이메일을 방지할 수 있습니다.

CREATE UNIQUE INDEX index_name ON table_name(column_name);


저는 중복된 값을 허용하는 일반 인덱스를 사용했습니다.

 

MySQL에서는 대부분의 데이터 타입에 인덱스를 설정할 수 있습니다.
다만 TEXT나 BLOB 같은 긴 문자열 타입은 부분 인덱스를 지정하는 것이 좋습니다.

Index 를 지정하면 쓰기 성능이 저하되기 때문에 쓰기가 많은 경우 신중하게 사용해야 합니다.

생성된 인덱스를 보려면 SHOW INDEX를 하면 됩니다.

 

SHOW INDEX FROM table_name;

 

인덱스를 삭제 하려면 DROP INDEX를 하시면 됩니다.

DROP INDEX index_name ON table_name;

 

 

 

728x90
반응형

 

1. Disable app 

PackageManager packageManager = getPackageManager();
packageManager.setApplicationEnabledSetting("com.package.name", PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER, 0);


2. Enable app

PackageManager packageManager = getPackageManager();
packageManager.setApplicationEnabledSetting("com.package.name", PackageManager.PackageManager. COMPONENT_ENABLED_STATE_ENABLED, 0);


3. Restore previous status

PackageManager packageManager = getPackageManager();
packageManager.setApplicationEnabledSetting("com.package.name", PackageManager.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);

 

 

https://developer.android.com/reference/android/content/pm/PackageManager#setApplicationEnabledSetting(java.lang.String,%20int,%20int)

728x90
반응형

파일에서 한줄 읽기

BufferedReader br = new BufferedReader(new FileReader("/..../file"));
String tmp = br.readLine();
br.close();

파일에서 여러 줄 읽기

BufferedReader br = new BufferedReader(new FileReader("/..../file"));
String tmp;
while((tmp=br.readLine())!=null){
	
}
br.close();

파일에 쓰기

String tmp = "my file";
FileOutputStream out = new FileOutputStream("/..../path");
out.write(tmp.getBytes());
out.close();

파일 혹은 디렉토리가 있는지 확인하기

 File f = new File("/../path");
 if(f.exists()){
 	// 존재함
 }

파일 혹은 디렉토리인지 확인하기

File f = new File("/..../path");
if(f.isDirectory()){
	// 디렉토리
}
else if(f.isFile()){
	// 파일
}

파일 혹은 디렉토리 삭제하기

File f = new File("/...../path");
f.delete();

디렉토리 만들기

File f = new File("/...../path");
f.mkdir();
//f.mkdirs(); // 상위 디렉토리가 없을 경우 자동으로 생성해줌

 

728x90
반응형

ubuntu server 에서 *.pyc 파일을 실행할때 제대로 실행이 안될때는 binfmt-support 가 설치되어 있는지 확인해 보아야 한다.

없다면!

apt-get install binfmt-support


http://bytes.com/topic/python/answers/693692-trouble-executing-pyc-files-ubuntu-server


728x90
반응형

'프로그래밍 > Python' 카테고리의 다른 글

Python CGI on Apache  (0) 2012.01.30
Apache에서 Python을 쓰기 위해서는 mod-python을 설치해야 합니다. 우분투는 아래와 같이 설치합니다.

apt-get install libapache2-mod-python


/etc/apache2/httpd.conf에 아래와 같이 설정해줍니다.
/var/www/cgi/ 에 python cgi 파일들이 있다고 가정합니다.

<Directory "/var/www/cgi">
                AddHandler cgi-script .cgi
                AddHandler cgi-script .pyc
                AddHandler cgi-script .py
                 Allow from all
                Options +ExecCGI
</Directory>

이제 /var/www/index.py 에 아래와 같이 작성해줍니다.

#!/usr/bin/python

print "Content-Type: text/plain\n"
print "Hello, Python!"

파일에 실행 권한을 줍니다.

chmod a+x /var/www/index.py


http://ip/index.py 에 접속해보면 Hello, Python! 이 출력됨을 알 수 있습니다.
728x90
반응형

'프로그래밍 > Python' 카테고리의 다른 글

Problem running *.pyc on ubuntu server  (0) 2012.01.30

+ Recent posts