6kittylog
Vectors 본문
Vectors
how lattices appear in crypto 떠들어보신다고 함(운동 갔다가 카공 하려니까 기운 빠져서 날카로움)
linear algebra에 대해 짚고 넘어가야 하는데(선형대수학이라 함)
벡터 V는 필드 F에서 이진수 연산으로 구성된 set(집합)이다.
v∈V 그리고 a(스칼라) ∈ F일 때, 두 벡터 간의 덧셈은 다른 벡터를 생성한다: v+w=z
v,w,z ∈V 그리고 vector*scalar 곱셈은 벡터를 생성한다: a*v=w와 a∈ F
두 평면 벡터가 있을 때, v∈V는 숫자들의 쌍으로 표현 가능하다(좌표 말하는듯) v=(a,b) (a,b는 R에 속함)
이때 덧셈과 곱셈은 다음과 같이 표현이 가능하다.
v+w=(a,b)+(c,d)=(a+c,b+d)
c*v=c(a,b)=(ac, bc)
그리고 inner product(요소 말하는 건가내적, 두 벡터를 가지고 scalar를 뱉는) 다음과 같이 표현 가능
v*w=a (v,w ∈V, a∈ F)
근데 요렇게도 가능함 -> vw=(a,b)(c,d)=ac+bd
Q. 3차원에서도 생각해보라 함
v=(2,6,3), w=(1,0,0), u=(7,7,2)일 때, 3(2v-w)2u 계산하기
풀어서 써보면.. 2u(6v-3w) 다 풀진 않았네 암튼암튼 괄호 안 먼저 계산
6v-3w=(12,36,18)+(-3,0,0)=(9,36,18)
(14,14,4)(9,36,18)=(126,504,72)
안되는데..
+ 라업 내용
내적이 되니까 vw=(a,b)(c,d)=ac+bd 이 식 가져와서 126+504+72=702
그리고 참고한 라업은 python으로 풀었더라고.. 나도 파이썬으로 풀어야겟드아..
def scalar(a,v):
#곱셈 경우만 생각
for i in range(len(v)):
v[i]=a*v[i]
return v
def twovecmul(v,w):
for i in range(len(v)):
v[i]=v[i]*w[i]
return v
def twovecadd(v,w):
for i in range(len(v)):
v[i]=v[i]+w[i]
return v
def innerproduct(v):
ans=0
for i in v:
ans=ans+i
return ans
'''
3*(2v-w)*2u를 av 꼴로 나타내면...
6u(2v-w)
'''
v=[2,6,3]
w=[1,0,0]
u=[7,7,2]
print(innerproduct(twovecmul(scalar(6,u),twovecadd(scalar(2,v),scalar(-1,w)))))
'+ > CRYPTO' 카테고리의 다른 글
Textbook-DSA2 (0) | 2025.04.23 |
---|---|
safeprime (0) | 2025.04.22 |
d (0) | 2025.01.11 |
Parameter Injection (0) | 2025.01.10 |
diffie-hellman (0) | 2025.01.10 |