में मैं कोई तरीका होना चाहिए गणना करने के लिए:मॉड्यूलर घातांक जावा
(g^u * y^v) mod p
जावा में
।
मैं की गणना के लिए इस एल्गोरिथ्म पाया है (छ^यू) आधुनिक p:
int modulo(int a,int b,int c) {
long x=1
long y=a;
while(b > 0){
if(b%2 == 1){
x=(x*y)%c;
}
y = (y*y)%c; // squaring the base
b /= 2;
}
return (int) x%c;
}
और यह बहुत अच्छा काम करता है, लेकिन मैं
(g^u * y^v) mod p
के लिए ऐसा करने के लिए एक रास्ता खोजने के लिए नहीं कर पा रहे
क्योंकि मेरे गणित कौशल कमजोर हैं।
इसे संदर्भ में रखने के लिए, यह "कम" डीएसए के जावा कार्यान्वयन के लिए है - सत्यापन करने वाले भाग को हल करने की आवश्यकता है।
मुझे लगता है कि पी प्रधान है, है ना? –
हाँ, पी प्राइम है, मुझे लगता है कि यह हल करता है: (जी^यू * वाई^वी) मॉड पी = (जी^यू मॉड पी) * (वाई^वी मॉड पी) मॉड पी, हालांकि मैंने इसका परीक्षण किया है अब तक छोटी संख्या –
और क्या यह बड़ी है? 'Mod p' भाग मुझे देखता है जैसे कि आप लंबे समय के बजाय' BigInteger' का उपयोग करना चाहते हैं। –