Ben gelen PrivateKey ile şifrelenmiş bir dize şifresini derlemeleri PublicKey kullanabilir miyim?

7 Cevap

. NET'te bir derleme imzalama bir genel / özel anahtar çifti içerir. Bildiğim kadarıyla ben okudum ne söyleyebilirim. NET gömülü genel anahtarı ile kontrol, derleme imzalamak için RSA algoritması ve özel anahtarını kullanır.

Ben kamu anahtarı almak için biliyorum (Assembly.PublicKey). Bu anahtar özel anahtar ile şifrelenmiş bazı verileri içeren bir kısa dize şifresini çözmek için kullanılacak olabilir eğer ben merak ediyordum.

Ben şimdiye kadar okudum dokümanlar (e.g.) yuvarlak sadece başka bir şekilde mümkün olduğunu ima görünüyor: Ben şifrelemek için ortak anahtarı ve şifresini çözmek için özel anahtarı kullanmak zorunda That - ama don 't gerçekten I. yapmak, mecliste o eklemek istiyorum

Ben sadece dize imzalı eğer, Tamam olurdu sanırım. Ama nasıl?

Ben bu başlatmak için nasıl bir kayıp biraz kulüpler. Herkes bir kod parçacığını var mı?

Ayrıca, bir web sunucusuna o boşaltması istiyorum çünkü küçük dize şifreleme / imzalama ideal, PHP olur ve biz bugüne kadar gereken tüm genel PHP / MySQL web sitesi ev sahipliği yaptı.

Use Case: Sanırım beta test için serbest bırakmak üzeresiniz bir yazılım için hafif bir lisans düzeni ile gelip çalışıyorum. Yazılım muhtemelen ücretsiz olacak bu yana, biz gerçekten ulaşmak istiyoruz hepsi bu

  1. yazılım yüklü olduğunu biliyor (e-posta adresi)
  2. let the software expire after a given period, after which the user will have to get a new license
    • Bu formu doldurarak ve gelmesi tuşu ile otomatik bir e-posta bekleyen kadar kolaydır
    • bizim itibar ısırmak için geri geliyor / bize musallat eski sürümleri olasılığına azaltmak için çalışıyoruz

Bir tuple (son kullanma tarihi, parmak izi) şifrelemek ve başlangıçta o şifresini güçlü olmak kolay bir lisanslama modülü yapacak: Uygulama başlatıldığında ilk kez, kullanıcı e-posta adresi, isim, organizasyon için istenir. Bu bilgiler bazı sistem bilgi (nic, bilgisayar adı, montaj büyük ve küçük sürüm) bir md5 parmak izi ile birlikte webserver nakledilir. Webserver e-posta ile cevap o diske kaydedilir başlığın (son kullanma tarihi, parmak izi) şifreli bir sürümü ile (e-posta adresi kontrol geçerlilik). Başlangıçta, bu deşifre ve güncel tarih ve rejenere parmak izi ile mukayese edilebilir.

EDIT: Tamam, bu yüzden henüz sorumun tüm cevapları yok. Ama benziyor. NET kolay şifreleme için özel anahtarı (bu hiç de mümkün ise, cevaplar gerçekten bu konuda aynı fikirde değilim) kullanmak için yapmayacağız.

Ben alacak rota (benim kullanım duruma göre) şudur:

  • Ben lisans imzalamak için özel anahtarını kullanır.
  • Ben lisans özel anahtar tarafından imzalandı doğrulamak için genel anahtarınızı kullanır
  • Bazı Metni imzalamak için (sn.exe tarafından üretilen). NET tuşlarını nasıl PHP Devs yönelik bir başka soruyu yayınlayacağız
  • Gerçekten yine bir karma olduğu gibi, lisans görme kullanıcı hakkında endişeli ve o allready bildiği şeyler hesaplanan değilim. Bütün istediğim çok zor herhangi bana (yazılım ücretsiz olacak, unutmayın bilmeden benim yazılım kopyalamak için tipik bir bina mimar için zahmet değer yapmak için - İstediğim bütün yüklü kim bir kağıt iz ... )

Cevaplar için çok teşekkür ederim.

7 Cevap

Değil. NET'te.

Eğer gerçekten bir şey her iki yönde bir şifreli sürümü ile sona olsa bile birçok geleneksel açık anahtarlı şifreleme algoritması, RSA gibi, sen, şifrelemek ve şifresini iki yönde, genellikle tek yönlü "şifreleme" ve diğer "imza" denir olabilir.

Ancak,. NET'te RSA uygulaması sakat edilmiş, ve zaman imzalama yalnızca tam işlenen bilgi, giriş sindirir değil üretecek.

Bu ve RSA ile yapılamaz ne hakkında bazı anlaşmazlık var gibi görünüyor, yani benim cevap daha spesifik olması düzenlemek izin.

Ben RSA matematik değil, herhangi bir özel RSA uygulama bahsediyorum.

RSA matematik size iki anahtar (özel veya kamu) ya bilgileri kodlamak için izin verir, ve kodlanmış veriler sadece iki tuşları diğer ile deşifre edilebilir.

Genellikle, bilgilerin şifrelenmesi, bir ortak anahtar ile kodlamak ve özel anahtar ile deşifre, bilgilerini şifresini. Veya, bilgilerin bir özetini almak özel tuşu ile kodlamak, karma imzalama ve imzayı karşılaştırmak ve doğrulamak amacıyla, genel anahtar ile karma kodunu.

Tipik uygulamaları bir tek veri karma tarafından, özel kamu verilerin tam kodlama yapmak için izin, ancak the math behind RSA fully allows this etmez.

Sen ortak anahtarını kullanarak şifresini çözemez. Bu şekilde, "halkın" bütün mesele kayıp olacaktır.

(Ancak, kamu anahtarını kullanarak imzayı doğrulamak sonra, özel anahtarı kullanarak bir şeyler imzalamak mümkün olabilir Bu çerçeve için anahtarlarını kullanır ne -. Montaj imzalanır ve genel anahtar imzayı doğrulamak için kullanılır. )

Bu SignedXml http://msdn.microsoft.com/en-us/library/ms229745.aspx kullanılarak yapılabilir. Bir alt düzeyde size kullanımı RSAPKCS1SignatureDeformatter ve RSAPKCS1SignatureFormatter prob olabilir. Sonra (şifresi) karma diğer ucu ile verileri karşılaştırarak veri karma şifreleyerek bu iş. Ben özel anahtar şifreleme sadece küçük veri işleyebilir, çünkü karma kullanılır inanıyorum. Bu sorunlar sadece ayrı bir anahtar çifti kullanmak neden ise, montaj kamu anahtarını yeniden konusunda emin değil.

20 saniye ups asmak bu sınıflar neden olabilir gibi Word uyarı, bu check out! http://www.pcreview.co.uk/forums/thread-3428177.php

Bu yaklaşım Reflexil kullanarak tahrif olmaktan imza doğrulama kodu açıktır ama bu başka bir konudur.

Ben yazdığım aşağıdaki ama ben zaten bu var rereading: Sen gerçekten lisans oluştururken veya tahrifat onları durdurmak isteyen, kullanıcıdan gelen verileri şifrelemek veya gizlemek için çalışmıyoruz. Sen bir kamu-özel anahtar şifreleme algoritması bu için kullanılabilir haklısın. Bu Signing, bir özel anahtar (sunucu tarafı lisans nesil) kullanarak olarak bilinir. Ve bir ortak anahtar (app lisans kontrol) kullanarak imza doğrulama. Bu araştırma ile yardımcı olacak gibi ben bu terminolojiyi söz.

RSA Kamu anahtar şifreleme için kullanılan özel anahtar şifre çözme için kullanılır. Sen bir şey şifresini çözmek için ortak bir anahtar kullanamazsınız ...

RSA bir ortak anahtar ve özel anahtar arasındaki tek gerçek fark gizli tutmak hangi biridir.

Yani şifreleme anahtarı olarak bir kamu tuşunu kullanın ve özel anahtarı ile deşifre veya şifreleme anahtarı olarak özel anahtarı kullanmak ve kamu anahtarı ile deşifre edebilirsiniz.

Özel anahtar ile şifrelenmesi (herkes genel anahtarı ile deşifre olabilir), dijital imzalar için kullanılır.

Lasse @ V. Karlsen Ama çekti. Net olması gerekenden daha daha zor hale getirebilir ...

Ben her iki yönde de kamuoyu ile mümkün şifrelemek ve özel ile deşifre ve özel anahtar ile şifrelemek düşünüyorum. Ikinci dijital imza nasıl çalıştığını yoludur.

Uyarı! Bu cevap yanlış ama ekli yorumların dizi Etrafa cevap tutmak için başkalarına yeterli ilgi düşünüyorum, çünkü ben yok-az burada bırakmak için gidiyorum. Tamam o beni aptal gibi görünmesini sağlar ama benim için yeni bir şey istediğiniz gibi oy ;) şu.

Genel anahtar için kullanılabilir: -

  • Sadece özel anahtarla çözülebilecek bir şey şifrelemek
  • Özel anahtar ile imzalanmış bir şey kimlik doğrulaması

Bu, özel bir anahtar ile şifrelenmiş bir şey şifresini çözmek için kullanılamaz. Onun Kamu / Özel anahtar sistemi Asimetrik sistemi olarak anılacaktır bu nedenle.