Status
Yeni mesajlara kapalıdır.

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,215
Python programlama dilinde yazılmış bazı şifreleme algoritmaları ve matematiksel işlemleri içeren örnek kodları sizlerle paylaşmak istiyorum.

Aşağıda her bir konu için kısa bir açıklama ve ilgili Python dosyalarını bulabilirsiniz.


Don't reinvent the wheel; use libraries and frameworks wisely.


Advanced Encryption Standard (AES) Implementation + ElGamal ;)

ElGamal şifreleme algoritması ile yapılan bir şifreleme ve ardından elde edilen şifreli veriyi AES kullanarak şifrelemektedir
ElGamal + AES:
from Crypto.Util import number
from Crypto.Random import get_random_bytes
from Crypto.Cipher import AES

def eg_encrypt(m, pub_key):
    p, g, h = pub_key
    k = number.getRandomRange(1, p-1)
    c1 = pow(g, k, p)
    s = pow(h, k, p)
    c2 = [(ord(m[i]) * s) % p for i in range(len(m))]
    return c1, c2

def eg_decrypt(c, priv_key):
    c1, c2 = c
    x, p = priv_key
    s = pow(c1, x, p)
    m = ''.join([chr((c2[i] * pow(s, p-2, p)) % p) for i in range(len(c2))])
    return m

message = "Mekatronik.org bir forum sitesidir."

key = get_random_bytes(16)
iv = get_random_bytes(AES.block_size)

p = number.getPrime(1024)
g = number.getRandomRange(1, p-1)
x = number.getRandomRange(1, p-2)
h = pow(g, x, p)

pub_key = (p, g, h)
priv_key = (x, p)

eg_ciphertext = eg_encrypt(message, pub_key)


print("ElGamal ile Şifrelenmiş Mesaj:")
for pair in eg_ciphertext:
    print(pair)

decrypted_message = eg_decrypt(eg_ciphertext, priv_key)

print("\nOrijinal Mesaj:", message)
print("Çözülen Mesaj:", decrypted_message)

kodun çıktısı şu şekildedir
Bash:
Orijinal Mesaj: Mekatronik.org bir forum sitesidir.
ElGamal ile Şifrelenmiş Mesaj:
(662757319321818644631891752222606451508131849094599825724688873557197478825328725162722262160706298476500536489808559135640825081585193316712315295843736501948438030114901922965830111673454416438677719630526347243241728829733071044053928501199348700728234634918218503395155465360542678854783818114671678029757406196820405422017983845622558336001961190029879586690554122185902286678932696542983023417926336132953823430502268219960319431902138844601364389065272856525231350750153193972131923489585124647099372466173014038381551034798457745893240996873252333175570511457029951367804135956746778255482762178808319937501961322358704154373493300152489696098496106693073902038167623729442557963832196501968033389290936262033499793087609062729053312226847356916902746434128084531016961666186964206376824487586796183122508372540011890631061460359920898412254631524127120086725656031899862614563417213059665228219682139461115037214656703747309042798477194030216087747752512053077332350465396987292831823660350642591942133842967465336450370665487828694813109256021011193404056184832161228403888723740438823008622313651768258998750048204849129072713692551936251786810959565537268989622441794550331238480683480340430128227651662843388170568155545437534129771853600751022325978874994700346148582854720803035122757698041064853299772091580579095227239998329555454233858734314750004731255776982998682024743662442556090145394669692956796163336708712953308639447943925484768243653556263176416350843455389052971246556259244987016140136443408838668635046012901045257332578861615557652461699741128508853328788329534628784444866282565739687207064741602569462150023649635509334250330694106929495883675541251224823798879585531843610679072579961561506301261740978286380940759674856292223077742370971134472956448787676980018382113149818552618156268235631745432971896870486536692238050946500788689028572218598249674370344667416213224329626839861769953573485049729671420361064870804257661203773158307072010185190868441849207474332870926315336023219516077621234933172802826789162369622606376078936297631727618314050665270595585565722463827225174202630624007997420751735151362496386495246667090019678543723977142735187502104009841973914263204669818827207221861388606946097108297611336189548987773801398272248842198366825035398324322074090537649671661468853469429142303473720038526330073406167176202952779196683320565930070914643729650829568219471386966481154248735393576802550591932527273387621336792265141586168473832742554196031801548080600396653693991940953740699303755181990061215151682472091248811523728017091619935776989094263967148742134177933557738261854511536785754166104961890413843446596225802689961536061529892037186057034241473631558367735369541072844499315930541898954697005210648626146473510452754081028529151488903950324206959598578758862735997259070693080034750412582729625961678354272875256091893740631392816384215748697097370173267267399062443953236310773289192708218642764933405929711723697253380129032697565704822686780924338451123633447171036038115574573572257632876325381694109341092032685569877404578280724515509257217891479539693002790162123786853662661261712557854185070288196111800888769754007585880502377145476048558288796175470176579614543084808733500988199853768861936168151188054848953388911200225203268702080474068295791355804295399004507196384168657028199218202498330273384193025053160991315312318601708228823792798818208052776453810253583347952211466846167290033516991265725071856523429191680725668315938209002238289857041796656303191869306626332661927429016056566722008341717351117229158987985019398586363437767470520079917919383547678417515345184443621551706042295221846050195758216768297424734240762043451053347858925693603086746656890076061472335067172987291108581563496150686251776265436623210054477771044530049633091227890997986427265711318102176112621692330232419689678424107283422313306122722551586580163648471114331803964151862288938131927611358140107161612399314503245430960024819199203582639328221004466136175320245547188078164591635971549698121502013986226783153287069086246396233267848124086512855264242004906398545215404198351495016169217896808139682152849090198021685922546050056777206964235047163332189507244738938201454804692570779996864266070078512513317439465083196432824407341587745457640947363777771004586586042776623169905586290734124787425818341557137998067547896250404221130256165146342564215480938631243243275158574184268402433004163522660467654878275408913902206106101868693942332772719675826195064744581476894340907307738721932466246992158564688114389541375108512850313565161805365450789077263367396695642898362230502525690697358973436426462948218745717866199396792006110504858678276595481102598454603292572931593712473667169088358830343186513297988273267128796250190784747896003862790882100495774594868899322575429142686219966911041583600875460474419024952476576066976926623346518273159251323558775628731508758033330736883947975094624171901793646432161193855450077346635582646556062344540417358556347193114272029465309942585269783564906558496341380481034684828703005095784056131827833854361105703818303721540437042379961849504303581371174050540251353848138456732077680459000312050882569791198256858431124071843932556763261155494109836794746167567372990951471227636641030041605235234674379848042677770855654187301700077311461334110446880132328583682166881861264566150943027184034476163980359675743654905555154265086825548561274555497607334000582721665582765012804751141588906264610021286140267489202173654088029190733859785314692403232836757847441987721002682341079332078051974508143254004423322968273750625837754369922618395537257896508960281541334427767640041258829785190787042790088012606430214546545328410218558963358926812823905689393503365011646260460457939742245204660145582650926675746466724894559487156109930762663987411725676305990292587797857428727711669007744580030983046416858791803539614066019341264130119343365205635529697957051102646907187037020282758925048840221125251769424135334429396413541361515038449632344584738071373986134550313361291802908601246573977707696901550754121213697501013223540651224122447630503562324776305346559513583150588199163178867994481003595038470996907915942716715319956533800952582581972454461514890309388452774876681059340674238431171097070256468092622733699221789164730736376485262541949743453906365675589539678994318764276639169692073509284504788624642407060100855743156161225652425568927667693590788776331556963695489301109126362103808671293195007374900758529421686654562698828743898879116738293839735080395444541845926802236864368290999554575305036082174607237153378490706229049139003602967671731015632692)
Çözülen Mesaj: Mekatronik.org bir forum sitesidir.
 
Son düzenleme:
Base64 Encoding and Decoding Implementation

Base64 kodlama ve çözme işlemlerinin bir Python kodu.


Base64:
import base64

original_text = "mekatronik.org"

encoded_text = base64.b64encode(original_text.encode('utf-8')).decode('utf-8')

print("Orjinal:", original_text)
print("Base64:", encoded_text)

decoded_text = base64.b64decode(encoded_text).decode('utf-8')

print("Çözülen:", decoded_text)

Çıktısı:
Orjinal: mekatronik.org
Base64: bWVrYXRyb25pay5vcmc=
Çözülen: mekatronik.org
 
Son düzenleme:
RSA Encryption and Decryption Implementation
RSA şifreleme ve çözme algoritmaları :dehset1:

bunu yazmıcam :D
 
Diffie-Hellman Key Exchange Implementation
Diffie-Hellman anahtar değişimi algoritmasının basit bir kod ile anlatımını içerir.

Python:
from pyDH import DiffieHellman

dh_obj1 = DiffieHellman()
dh_obj2 = DiffieHellman()

public_key1 = dh_obj1.gen_public_key()
public_key2 = dh_obj2.gen_public_key()

shared_key1 = dh_obj1.gen_shared_key(public_key2)
shared_key2 = dh_obj2.gen_shared_key(public_key1)

assert shared_key1 == shared_key2

print("Açık Anahtar 1: ", public_key1)
print("Açık Anahtar 2: ", public_key2)
print("Ortak Anahtar: ", shared_key1)

Çıktısı:
Açık Anahtar 1:  8808555100307987004470763486609437964827589034261284258692381125075489796030912865484094624503527997652400000244471268377823672388985700742873528603800761593947647161483465789787554651613405139377942873348738383662149806431120156252482146127931971962251987456212660538080288130069743149916323522328780590512483059785094085875248750187838267520925459826155789892349727831784680721656351910126738130661443014415393465329195838231209478781852651443227170134990050204254978604621523629673119941362648656313942014874390502839072392554393185137874146181527198693364515659811093428964546378449119486792010588352142471441945519529536795395953640285430841599079606431020521245530271589296199684568604088783131242343145379243037033281921809168131381962699942148335569379921581447128729441527759743474698391912407383870221128468702183317261493163090243966626958461118483229220523915636071642319053592621662760364013671410544524221519723608433885728585041305857475262248190451948853462151103111127551015528011812205787260993482474780674806257042286828180659876430953081281633003988659408123890094939463542447268160895585787780677100445954676650403624019
Açık Anahtar 2:  363839087246641225914980143442042369604591495001033454815759271595308003132209358106351489297527354693816579469138876660972440121197643245373799331823600959316271204198231265675915501441132991994854300214769289572309546708153456547994558092799359164529001460124389162257865115141938667327122612724037935826219105381354073188254837347727278078774012331284308135813238598800567138960230260165542498572193246809334604973651217268161557283261650112262338963413088769057809499021235423191008351028454964937651622472199413710310951111178424832011380348696070669464261115630000632997290258049837457379623980578310723285938932711438029128510315079524280855838400315165468854274894685942529551544754930670845656379501585837690635236131225127362462686868744192964665922927152373161588264348311185416242781703967849076237454348744091777396394594106879760497970348127856146072765037013939272875717482079854735479777367929810905448372439946411536647606198614974873923507646802051220009185132321636605074367368538514721346661043250546631656221879832537081850581330120442473855079687587780554386024472145958011109415021012448631174464676134620361466765702476924801586765387873071009855669488221306860536882246441050937088937745754970272533535348161133885373866661861852358295567314569095098477054053938227512405515873292292461601692420609448832192282755640606312628178285128736077209353152583013663920777939914165937780637451538694070117792485636630775368370741833010961503905298765994385352120276218775950387983871299981219539088329407651401294553610458439788041508216785111177427227289854327926987017243407145271128003853696829427259452671376048156067195400061433628117288836005860109195065013804868458433033253174030287389019881120474034070897567598301235653943893238150158647386963024250634624271899707923974679196605846961480415150126057630848619605571336752215295021312220740846336610336086336656405651556693391890923822725080790741870
Ortak Anahtar:   25914980143442042369604591495001033454815759271595308003132209358106351489297527354693816579469138876660972440121197643245373799331823600959316271204198231265675915501441132991994854300214769289572309546708153456547994558092799359164529001460124389162257865115141938667327122612724037935826219105381354073188254837347727278078774012331284308135813238598800567138960230260165542498572193246809334604973651217268161557283261650112262338963413088769057809499021235423191008351028454964937651622472199413710310951111178424832011380348696070669464261115630000632997290258049837457379623980578310723285938932711438029128510315079524280855838400315165468854274894685942529551544754930670845656379501585837690635236131225127362462686868744192964665922927152373161588264348311185416242781703967849076237454348744091777396394594106879760497970348127856146072765037013939272875717482079854735479777367929810905448372439946411536647606198614974873923507646802051220009185132321636605074367368538514721346661043250546631656221879832537081850581330120442473855079687587780554386024472145952591498014344204236960459149500103345481575927159530800313220935810635148929752735469381657946913887666097244012119764324537379933182360095931627120419823126567591550144113299199485430021476928957230954670815345654799455809279935916452900146012438916225786511514193866732712261272403793582621910538135407318825483734772727807877401233128430813581323859880056713896023026016554249857219324680933460497365121726816155728326165011226233896341308876905780949902123542319100835102845496493765162247219941371031095111117842483201138034869607066946426111563000063299729025804983745737962398057831072328593893271143802912851031507952428085583840031516546885427489468594252955154475493067084565637950158583769063523613122512736246268686874419296466592292715237316158826434831118541624278170396784907623745434874409177739639459410687976049797034812785614607276503701393927287571748207985473547977736792981090544837243994641153664760619861497487392350764680205122000918513232163660507436736853851472134666104325054663165622187983253708185058133012044247385507968758778055438602447214595
 
Elliptic Curve Cryptography (ECC) Implementation

Elliptic Curve Cryptography (ECC) algoritmasının P-256 eğrisini kullanır basit bir kod:pillowfight1:

Python:
from Crypto.PublicKey import ECC

key = ECC.generate(curve='P-256')

private_key = key.export_key(format='PEM')
public_key = key.public_key().export_key(format='PEM')

message = b"Mekatronik.org/forum çakır öldümü?"

encrypted_message = key.public_key().encrypt(message, None)

decrypted_message = key.decrypt(encrypted_message)

print("Özel Anahtar: ", private_key.decode('utf-8'))
print("Açık Anahtar: ", public_key.decode('utf-8'))
print("Orijinal Mesaj: ", message)
print("Şifreli Mesaj: ", encrypted_message)
print("Çözümlenmiş Mesaj: ", decrypted_message)

Çıktısı:
Özel Anahtar:  -----BEGIN PRIVATE KEY-----
MHcCAQEEIE6WBtcdLO2R1RFIgs13wtylXhBwx2MHw21b2qC5NJ1woAoGCCqGSM49
AwEHoUQDQgAE7Tl5aRmVlQtvtdtjJhDFaaH8ZXtRJQGbGcPnKPVgY9W5Fibjqd7h
Uy3uE7zw5HWws+tTe/xs+aOYS1yyqIrW8g==
-----END PRIVATE KEY-----
Açık Anahtar:  -----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7Tl5aRmVlQtvtdtjJhDFaaH8ZXtR
JQGbGcPnKPVgY9W5Fibjqd7hUy3uE7zw5HWws+tTe/xs+aOYS1yyqIrW8g==
-----END PUBLIC KEY-----
Orijinal Mesaj:  b'Mekatronik.org/forum \xc3\xa7ak\xc4\xb1r \xc3\xb6ld\xc3\xbcm\xc3\xbc?'
Şifreli Mesaj:  b'0\xd7\xcd@\x96\xcf)\xfc\xb8\x19t(\xe2\x15x\t\xd5+\x9d*\xe9\xa4o\xf3\xd9\xe4y\xe3\xcf9\x95\x84\x0e\xbd\xf0'
Çözümlenmiş Mesaj:  b'Mekatronik.org/forum \xc3\xa7ak\xc4\xb1r \xc3\xb6ld\xc3\xbcm\xc3\xbc?'
 
Linear Formula Implementation

basit bir şifreleme algoritması olan "Cezar Şifreleme" veya "Shift Cipher" uygular. Bu şifreleme türünde her harfi belirli bir sayıda kaydırarak şifreleme yapılır. Bu örnekte key değeri 3 olarak belirlenmiştir, yani her harf 3 pozisyon kaydırılmıştır.
Python:
alphabet = 'abcdefghijklmnopqrstuvwxyz'
key = 3
new_message = ''

message = 'mekatronik.org/forum'

for character in message:
    if character in alphabet:
        position = alphabet.find(character)
        new_position = (position + key) % 26
        new_character = alphabet[new_position]
        new_message += new_character
    else:
        new_message += character

print(new_message)

Çıktısı:
phlwdwqlvnl.rv/huyhb
 
Son düzenleme:
Digital Signature Algorithm (DSA) Implementation
DSA (Digital Signature Algorithm) algoritması ile dijital imza oluşturma ve doğrulama işlemlerini göstermektedir.
Python:
from Crypto.PublicKey import DSA
from Crypto.Signature import DSS
from Crypto.Hash import SHA256

key_pair = DSA.generate(2048)

def sign(key_pair, message):
    hash_obj = SHA256.new(message)
    signer = DSS.new(key_pair, 'fips-186-3')
    signature = signer.sign(hash_obj)
    return signature

def verify(key_pair, message, signature):
    hash_obj = SHA256.new(message)
    verifier = DSS.new(key_pair, 'fips-186-3')
    try:
        verifier.verify(hash_obj, signature)
        print("İmza doğru.")
    except ValueError:
        print("İmza yanlış.")

message = b"1234"

signature = sign(key_pair, message)

verify(key_pair.publickey(), message, signature)

Çıktısı:
İmza doğru.
 

Hash Function (Usage of SHA-256)

SHA-256 hash fonksiyonunu kullanır. Bu tür bir hash fonksiyonu,
veride küçük bir değişiklik olsa bile üretilen hash değerinde büyük farklılıklar sağlar.

Python:
import hashlib

def hash_function(data):
    hashed_data = hashlib.sha256(data.encode()).hexdigest()
    return hashed_data


input_data = "mekatronik.org/forum"
hashed_result = hash_function(input_data)
print(f"Orjinal Veri: {input_data}")
print(f"Hash Değeri: {hashed_result}")

Çıktısı:
Orjinal Veri: mekatronik.org/forum
Hash Değeri: 65dd7f0c7f2362b7e28e09db7d81210da28294f3a05ef2223548a0842e9c81b2
 
Son düzenleme:
3DES (Triple Data Encryption Standard), DES (Data Encryption Standard)

3DES, temelde aynı DES algoritmasının üç kez kullanılması ilkesine dayanır.
Anahtarlar genellikle ABA şeması veya CBC (Cipher Block Chaining) modu ile birleştirilir

Python:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding

def encrypt_3des(message, key):
    cipher = Cipher(algorithms.TripleDES(key), modes.ECB(), backend=default_backend())
    encryptor = cipher.encryptor()
    padder = padding.PKCS7(algorithms.TripleDES.block_size).padder()
    padded_data = padder.update(message) + padder.finalize()
    encrypted_message = encryptor.update(padded_data) + encryptor.finalize()
    return encrypted_message

def decrypt_3des(encrypted_message, key):
    cipher = Cipher(algorithms.TripleDES(key), modes.ECB(), backend=default_backend())
    decryptor = cipher.decryptor()
    decrypted_data = decryptor.update(encrypted_message) + decryptor.finalize()
    unpadder = padding.PKCS7(algorithms.TripleDES.block_size).unpadder()
    decrypted_message = unpadder.update(decrypted_data) + unpadder.finalize()
    return decrypted_message

key = b'd3d3l3rAnl4tiy0r'

original_message = b"mekatronik.org/forum"

print("Original :", original_message)

encrypted_message = encrypt_3des(original_message, key)
print("Encrypted:", encrypted_message)
decrypted_message = decrypt_3des(encrypted_message, key)
print("Decrypted Message:", decrypted_message)

Çıktısı:
Original : b'mekatronik.org/forum'
Encrypted: b'8V\x1a\x01\xcd\xaf\x1a\x95\x80%\xd1rB?\xa6\x8c0\xd8O\x98\x82\xa5\xab\xd1'
Decrypted Message: b'mekatronik.org/forum'
 
Son düzenleme:
XOR (exclusive or)
Python:
def xor(text, key):
    text = ''.join(chr(ord(char) ^ key) for char in text)
    return text

def xor_decrypt(text, key):
    return xor(text, key)

original_text = "mekatronik.org/forum"

encryption_key = 99
print(f"Şifreleme Anahtarı: {encryption_key}")
text = xor(original_text, encryption_key)
print(f"Şifrelenmiş Metin: {text}")
print(f"Şifrelenmiş Metinin Uzunluğu: {len(text)}")
decrypted = xor_decrypt(text, encryption_key)
print(f"Çözülmüş Metin: {decrypted}")

Çıktısı:
Şifreleme Anahtarı: 99
Şifrelenmiş Metin:

M
 L

Şifrelenmiş Metinin Uzunluğu: 20
Çözülmüş Metin: mekatronik.org/forum
 
Son düzenleme:
ÖMER HAYYAM ÜÇGENİ ALGORİTMASI (hayyam üçgeni algoritması "custom")
hayyamın ve ibni Arabinin methotlarını düşünürken aklıma geldi tamamen özel kullanmak isterseniz kullanın metni binom katsayılarını kullanıp adımlara göre şifreler ve o adımlara göre şifreyi çözer
Python:
def hayyam_katsayisi(n, k):
    if k == 0 or k == n:
        return 1
    return hayyam_katsayisi(n-1, k-1) + hayyam_katsayisi(n-1, k)

def metni_hayyam_ile_sifrele(metin, hayyam_katsayilari):
    sifreli_metin = ''
    for i, karakter in enumerate(metin):
        katsayi = hayyam_katsayilari[i % len(hayyam_katsayilari)]
        sifreli_karakter = chr(ord(karakter) + katsayi)
        sifreli_metin += sifreli_karakter
    return sifreli_metin

def sifreli_metni_hayyam_ile_coz(sifreli_metin, hayyam_katsayilari):
    cozulmus_metin = ''
    for i, karakter in enumerate(sifreli_metin):
        katsayi = hayyam_katsayilari[i % len(hayyam_katsayilari)]
        cozulmus_karakter = chr(ord(karakter) - katsayi)
        cozulmus_metin += cozulmus_karakter
    return cozulmus_metin

orijinal_metin = "mekatronik.org/forum"
print(f"Orijinal Metin: {orijinal_metin}")

hayyam_katsayilari = [hayyam_katsayisi(10, i) for i in range(10)]
print(hayyam_katsayilari)

sifreli_metin = metni_hayyam_ile_sifrele(orijinal_metin, hayyam_katsayilari)
print(f"Şifrelenmiş Metin: {sifreli_metin}")

cozulmus_metin = sifreli_metni_hayyam_ile_coz(sifreli_metin, hayyam_katsayilari)
print(f"Çözülmüş Metin: {cozulmus_metin}")

Çıktısı:
Orijinal Metin: mekatronik.org/forum
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10]
Şifrelenmiş Metin: noņŮŁæu/yāŢŁê¢w
Çözülmüş Metin: mekatronik.org/forum
 
Son düzenleme:
Status
Yeni mesajlara kapalıdır.

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,879
Mesajlar
100,183
Üyeler
2,488
Son üye
ilter

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top